Add Wireguard playbook and first commit
This commit is contained in:
71
roles/homelab/wireguard/tasks/peers.yml
Normal file
71
roles/homelab/wireguard/tasks/peers.yml
Normal file
@@ -0,0 +1,71 @@
|
||||
---
|
||||
|
||||
- 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
|
||||
Reference in New Issue
Block a user