Add Wireguard playbook and first commit

This commit is contained in:
2026-08-29 16:07:57 +03:00
parent 4b1d5e4c66
commit 1ed3f0f5b6
18 changed files with 438 additions and 1 deletions

View 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