diff --git a/lookup_plugins/qubes-pass.py b/lookup_plugins/qubes-pass.py index 279a187..5016af2 100644 --- a/lookup_plugins/qubes-pass.py +++ b/lookup_plugins/qubes-pass.py @@ -16,7 +16,7 @@ UNDEFINED = object() class LookupModule(LookupBase): - def run(self, args, variables=None, vm=None, create=True, no_symbols=False, default=UNDEFINED): + def run(self, args, variables=None, vm=None, create=True, multiline=False, no_symbols=False, default=UNDEFINED): ret = [] @@ -32,7 +32,9 @@ class LookupModule(LookupBase): display.vvvv(u"Password lookup using command %s" % cmd) try: - ret = subprocess.check_output(cmd)[:-1] + ret = subprocess.check_output(cmd) + if not multiline: + ret = ret[:-1] except subprocess.CalledProcessError as e: if e.returncode == 8: if create or default is UNDEFINED: @@ -41,6 +43,4 @@ class LookupModule(LookupBase): else: raise AnsibleError("qubes-pass lookup failed: %s" % e) - if sys.version_info.major == 2: - return [ret] - return [ret.decode("utf-8")] + return [ret] diff --git a/lookup_plugins/test-qubes-pass.yml b/lookup_plugins/test-qubes-pass.yml new file mode 100644 index 0000000..6f1f801 --- /dev/null +++ b/lookup_plugins/test-qubes-pass.yml @@ -0,0 +1,42 @@ +- hosts: localhost + gather_facts: no + tasks: + - name: delete + shell: | + qvm-pass rm test-qubes-pass || true + + - name: test qubes-pass lookup + shell: | + password={{ lookup("qubes-pass", "test-qubes-pass") | quote }} + echo "$password" + register: firsttry + - name: test qubes-pass lookup second time + shell: | + password={{ lookup("qubes-pass", "test-qubes-pass") | quote }} + echo "$password" + register: secondtry + - name: evaluate if they match + shell: | + firsttry={{ firsttry.stdout | quote }} + secondtry={{ secondtry.stdout | quote }} + if [ "$firsttry" != "$secondtry" ] ; then echo no match ; exit 8 ; fi + - name: delete + shell: qvm-pass rm test-qubes-pass + + - name: generate randomness + shell: | + pwd + dd if=/dev/urandom of=.randomdata bs=16384 count=1 + - name: test qubes-pass insert + shell: | + qvm-pass insert -m test-qubes-pass < .randomdata + - name: evaluate if they match + shell: | + set -e + echo {{ lookup("qubes-pass", "test-qubes-pass", create=False, multiline=True) | b64encode | quote }} | base64 -d > .randomdatafetched + ls -la .randomdata .randomdatafetched + diff .randomdata .randomdatafetched + - name: delete + shell: | + qvm-pass rm test-qubes-pass + rm -f .randomdata .randomdatafetched