- name: Check name of gpg2 binary command: which gpg2 register: gpg2_check ignore_errors: true - name: Set gpg2 binary name set_fact: gpg2_bin: '{{ "gpg2" if gpg2_check is successful else "gpg" }}' - name: Stop gpg-agent so we can remove any locks on the GnuPG dir command: gpgconf --kill gpg-agent ignore_errors: yes - name: Remove previous password files and directory file: dest: "{{ item }}" state: absent loop: - "~/.gnupg" - "~/.password-store" # How to generate a new GPG key: # gpg2 --batch --gen-key input # See templates/input # gpg2 --list-secret-keys --keyid-format LONG # gpg2 --armor --export-secret-keys [key id] # # Get the fingerprint # gpg2 --fingerprint --keyid-format LONG | grep [key id] -A 1 | tail -1 | tr -d '[:space:]' | awk -F '=' '{print $2":6:"}' - name: Import GPG private key shell: echo "{{ passwordstore_privkey }}" | {{ gpg2_bin }} --import --allow-secret-key-import - - name: Trust key shell: echo "D3E1CC8934E97270CEB066023AF1BD3619AB496A:6:" | {{ gpg2_bin }} --import-ownertrust - name: Initialise passwordstore command: pass init ansible-test - name: Create a password set_fact: newpass: "{{ lookup('community.general.passwordstore', 'test-pass length=8 create=yes') }}" - name: Fetch password from an existing file set_fact: readpass: "{{ lookup('community.general.passwordstore', 'test-pass') }}" - name: Verify password 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