summaryrefslogblamecommitdiff
path: root/roles/gnupg/tasks/main.yml
blob: d1289f5ce9b4bf554fca3bef113c80329b8dedb8 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14













                                     
                                                                               
                                 























































                                                                                       

















                                                                                



                                                                                                                          
---
- name: Config files
  synchronize:
    recursive: yes
    archive: no
    checksum: yes
    src: gnupg
    dest: /$XDG_CONFIG_HOME/
- name: Protect directory
  file:
    path: $XDG_CONFIG_HOME/gnupg
    state: directory
    mode: 0700
- name: Get gnupg runtime folder name
  shell: 'gpgconf --list-dirs socketdir | sed -e "s@$XDG_RUNTIME_DIR/gnupg/@@"'
  register: gnupg_runtime_dir_cmd
  changed_when: false
- name: check existing secret key
  shell: "gpg --list-secret-keys | grep '{{ gpg_useremail }}'"
  changed_when: false
  ignore_errors: true
  register: gpgkeys
- name: ask for gpg password
  pause:
    prompt: "Chose gpg password"
    echo: false
  register: gpg_password
  when: gpgkeys is defined and "stdout" in gpgkeys and gpgkeys.stdout == ""
- name: confirm gpg password
  pause:
    prompt: "Confirm gpg password"
    echo: false
  register: gpg_password_confirm
  when: gpgkeys is defined and "stdout" in gpgkeys and gpgkeys.stdout == ""
- name: check gpg password
  assert:
    that: gpg_password_confirm.user_input == gpg_password.user_input
  when: gpgkeys is defined and "stdout" in gpgkeys and gpgkeys.stdout == ""
- name: copy default template for gpg key generation
  template:
    src: gen-key-script.j2
    dest: "$XDG_CONFIG_HOME/gnupg/gen-key-script-{{ gpg_user }}"
    mode: 0600
  no_log: true
  when: gpgkeys is defined and "stdout" in gpgkeys and gpgkeys.stdout == ""
- name: generate gpg key
  command: "gpg --batch --gen-key $XDG_CONFIG_HOME/gnupg/gen-key-script-{{ gpg_user }}"
  when: gpgkeys is defined and "stdout" in gpgkeys and gpgkeys.stdout == ""
  register: genkey
- name: remove template file
  file:
    path: "$XDG_CONFIG_HOME/gnupg/gen-key-script-{{ gpg_user }}"
    state: absent
  when: gpgkeys is defined and "stdout" in gpgkeys and gpgkeys.stdout == ""
- name: get keygrip
  shell: "gpg -K --with-colons {{ gpg_useremail }} | grep '^grp' | cut -d':' -f10"
  register: keygrip
  when: gpgkeys is defined and "stdout" in gpgkeys and gpgkeys.stdout == ""
  notify:
    - notify add key to immae@immae.eu
    - send key to immae@immae.eu
    - notify add key to password store
- name: add keygrip to sshcontrol
  lineinfile:
    line: "{{ keygrip.stdout }}"
    insertafter: EOF
    dest: "$XDG_CONFIG_HOME/gnupg/sshcontrol"
    create: true
    state: present
  when: keygrip is defined and "stdout" in keygrip and keygrip.stdout != ""
  notify:
    - restart gpg-agent
- name: Add systemd overrides
  template:
    src: "systemd/{{ item }}.conf.j2"
    dest: "$XDG_CONFIG_HOME/systemd/user/{{ item }}.socket.d/override.conf"
  register: results
  loop:
    - dirmngr
    - gpg-agent
    - gpg-agent-browser
    - gpg-agent-extra
    - gpg-agent-ssh
- name: Restart systemd units
  systemd:
    daemon_reload: true
    scope: user
    state: restarted
    name: "{{ item }}.socket"
  loop: "{{ results.results|selectattr('changed')|map(attribute='item')|list }}"
- name: clone password store
  register: clone_password_store
  shell: "cd $(dirname $ANSIBLE_CONFIG ); git submodule update --init password_store"
  changed_when: clone_password_store is defined and "stdout" in clone_password_store and clone_password_store.stdout != ""