diff --git a/changelogs/fragments/passwordstore_fix.yml b/changelogs/fragments/passwordstore_fix.yml new file mode 100644 index 00000000000..3d54bce5b03 --- /dev/null +++ b/changelogs/fragments/passwordstore_fix.yml @@ -0,0 +1,2 @@ +bugfixes: +- Handle equal sign in password while using passwordstore lookup plugin. diff --git a/lib/ansible/plugins/lookup/passwordstore.py b/lib/ansible/plugins/lookup/passwordstore.py index 06f0931a12d..7bdbee864c9 100644 --- a/lib/ansible/plugins/lookup/passwordstore.py +++ b/lib/ansible/plugins/lookup/passwordstore.py @@ -156,7 +156,7 @@ class LookupModule(LookupBase): # next parse the optional parameters in keyvalue pairs try: for param in params[1:]: - name, value = param.split('=') + name, value = param.split('=', 1) if name not in self.paramvals: raise AnsibleAssertionError('%s not in paramvals' % name) self.paramvals[name] = value diff --git a/test/integration/targets/lookup_passwordstore/tasks/tests.yml b/test/integration/targets/lookup_passwordstore/tasks/tests.yml index 50937f7da2f..2b3a9315c67 100644 --- a/test/integration/targets/lookup_passwordstore/tasks/tests.yml +++ b/test/integration/targets/lookup_passwordstore/tasks/tests.yml @@ -47,3 +47,16 @@ assert: that: - readpass == newpass + +- name: Create a password with equal sign + set_fact: + newpass: "{{ lookup('passwordstore', 'test-pass-equal userpass=SimpleSample= create=yes') }}" + +- name: Fetch a password with equal sign + set_fact: + readpass: "{{ lookup('passwordstore', 'test-pass-equal') }}" + +- name: Verify password + assert: + that: + - readpass == newpass