|
|
|
---
|
|
|
|
|
|
|
|
- name: Check for debian major version
|
|
|
|
assert:
|
|
|
|
that: "ansible_distribution_major_version is version_compare('10', '>=')"
|
|
|
|
msg: "This role requires at least Debian Buster"
|
|
|
|
|
|
|
|
- name: Install wireguard using apt
|
|
|
|
apt:
|
|
|
|
name:
|
|
|
|
- wireguard
|
|
|
|
state: present
|
|
|
|
|
|
|
|
- name: Upgrade systemd to backports (required for buster)
|
|
|
|
apt:
|
|
|
|
default_release: buster-backports
|
|
|
|
name:
|
|
|
|
- libpam-systemd
|
|
|
|
- libsystemd0
|
|
|
|
- systemd
|
|
|
|
state: latest # required to trigger update
|
|
|
|
when: "ansible_distribution_major_version == '10'"
|
|
|
|
|
|
|
|
- name: Create wireguard configuration directory
|
|
|
|
file:
|
|
|
|
state: directory
|
|
|
|
path: "{{ global_wireguard_configuration_directory }}"
|
|
|
|
owner: root
|
|
|
|
group: "{{ global_systemd_network_system_user }}"
|
|
|
|
mode: u=rwx,g=rx,o=rx
|
|
|
|
|
|
|
|
- name: Create wireguard key directory
|
|
|
|
file:
|
|
|
|
state: directory
|
|
|
|
path: "{{ wireguard_key_directory }}"
|
|
|
|
owner: root
|
|
|
|
group: "{{ global_systemd_network_system_user }}"
|
|
|
|
mode: u=rwx,g=rx,o=
|
|
|
|
|
|
|
|
- name: Generate key pair
|
|
|
|
shell: >-
|
|
|
|
wg genkey
|
|
|
|
| tee {{ wireguard_private_key | quote }}
|
|
|
|
| wg pubkey > {{ wireguard_public_key | quote }}
|
|
|
|
args:
|
|
|
|
chdir: "{{ wireguard_key_directory }}"
|
|
|
|
creates: "{{ wireguard_public_key }}"
|
|
|
|
|
|
|
|
- name: Secure key to prevent logging
|
|
|
|
file:
|
|
|
|
state: file
|
|
|
|
path: "{{ wireguard_private_key }}"
|
|
|
|
owner: root
|
|
|
|
group: "{{ global_systemd_network_system_user }}"
|
|
|
|
mode: u=rwx,g=rx,o=
|
|
|
|
|
|
|
|
- name: Download wireguard public key
|
|
|
|
fetch:
|
|
|
|
src: "{{ wireguard_public_key }}"
|
|
|
|
dest: "{{ global_wireguard_public_directory }}/{{ inventory_hostname }}"
|
|
|
|
fail_on_missing: yes
|
|
|
|
flat: yes
|
|
|
|
validate_checksum: yes
|
|
|
|
|
|
|
|
- name: Store peer configuration locally
|
|
|
|
template:
|
|
|
|
src: peer.conf
|
|
|
|
dest: "{{ global_wireguard_peers_directory }}/{{ inventory_hostname }}"
|
|
|
|
owner: "{{ local_user }}"
|
|
|
|
group: "{{ local_user }}"
|
|
|
|
mode: "u=rw,g=r,o="
|
|
|
|
delegate_to: localhost
|
|
|
|
|
|
|
|
- name: Configure systemd for WireGuard
|
|
|
|
template:
|
|
|
|
src: "{{ item.src }}"
|
|
|
|
dest: "{{ item.dest }}"
|
|
|
|
owner: root
|
|
|
|
group: "{{ global_systemd_network_system_user }}"
|
|
|
|
mode: u=rw,g=r,o=
|
|
|
|
loop:
|
|
|
|
- src: wg.netdev
|
|
|
|
dest: "{{ netdev_file }}"
|
|
|
|
- src: wg.network
|
|
|
|
dest: "{{ network_file }}"
|
|
|
|
notify:
|
|
|
|
- restart systemd network
|
|
|
|
|
|
|
|
- name: Create directory for systemd WireGuard network
|
|
|
|
file:
|
|
|
|
state: directory
|
|
|
|
path: "{{ netdev_directory }}"
|
|
|
|
owner: root
|
|
|
|
group: "{{ global_systemd_network_system_user }}"
|
|
|
|
mode: u=rwx,g=rx,o=
|