72 lines
2.1 KiB
YAML
72 lines
2.1 KiB
YAML
---
|
|
|
|
- name: "Generate private keys"
|
|
ansible.builtin.shell:
|
|
cmd: wg genkey
|
|
register: "peer_keys"
|
|
loop: "{{ wireguard_clients }}"
|
|
loop_control:
|
|
label: "{{ item.name }}"
|
|
args:
|
|
creates: "{{ wireguard_config_dir }}/peer_{{ item.name }}_private.key"
|
|
no_log: true
|
|
|
|
- name: "Save private keys"
|
|
ansible.builtin.copy:
|
|
content: "{{ item.stdout }}"
|
|
dest: "{{ wireguard_config_dir }}/peer_{{ item.item.name }}_private.key"
|
|
owner: root
|
|
group: root
|
|
mode: "0600"
|
|
loop: "{{ peer_keys.results }}"
|
|
loop_control:
|
|
label: "{{ item.item.name }}"
|
|
when: item.change | default(false)
|
|
no_log: true
|
|
|
|
- name: "Read all private keys"
|
|
ansible.builtin.slurp:
|
|
src: "{{ wireguard_config_dir }}/peer_{{ item.name }}_private.key"
|
|
register: peer_privkey_contents
|
|
loop: "{{ wireguard_clients }}"
|
|
loop_control:
|
|
label: "{{ item.name }}"
|
|
no_log: true
|
|
|
|
- name: "Generate public keys"
|
|
ansible.builtin.shell:
|
|
cmd: "cat {{ wireguard_config_dir }}/peer_{{ item.name }}_private.key | wg pubkey"
|
|
register: peer_pubkey
|
|
loop: "{{ wireguard_clients }}"
|
|
loop_control:
|
|
label: "{{ item.name }}"
|
|
changed_when: false
|
|
|
|
- name: "Save public keys"
|
|
ansible.builtin.copy:
|
|
content: "{{ item.stdout }}"
|
|
dest: "{{ wireguard_config_dir }}/peer_{{ item.item.name }}_public.key"
|
|
mode: '0644'
|
|
loop: "{{ peer_pubkey.results }}"
|
|
loop_control:
|
|
label: "{{ item.item.name }}"
|
|
|
|
- name: "Generate client configuration files"
|
|
ansible.builtin.template:
|
|
src: client.conf.j2
|
|
dest: "{{ wireguard_client_config_dir }}/{{ item.0.name }}.conf"
|
|
owner: root
|
|
group: root
|
|
mode: '0600'
|
|
loop: "{{ wireguard_clients | zip(peer_privkey_contents.results, peer_pubkey.results) | list }}"
|
|
loop_control:
|
|
label: "{{ item.0.name }}"
|
|
|
|
- name: "Generate QR codes for moblie clients"
|
|
ansible.builtin.shell:
|
|
cmd: "qrencode -t ansiutf8 < {{ wireguard_client_config_dir }}/{{ item.name }}.conf > {{ wireguard_client_config_dir }}/{{ item.name }}_qr.txt"
|
|
loop: "{{ wireguard_clients }}"
|
|
loop_control:
|
|
label: "{{ item.name }}"
|
|
changed_when: false
|