aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--roles/wireguard/handlers/main.yml5
-rw-r--r--roles/wireguard/tasks/main.yml30
-rw-r--r--roles/wireguard/templates/depend_service_wg-quick.conf.j27
3 files changed, 41 insertions, 1 deletions
diff --git a/roles/wireguard/handlers/main.yml b/roles/wireguard/handlers/main.yml
new file mode 100644
index 0000000..390e740
--- /dev/null
+++ b/roles/wireguard/handlers/main.yml
@@ -0,0 +1,5 @@
+- name: Reload systemd daemon
+ become: true
+ ansible.builtin.systemd_service:
+ daemon_reload: true
+ listen: wireguard_reload
diff --git a/roles/wireguard/tasks/main.yml b/roles/wireguard/tasks/main.yml
index 4deea91..f48f8cb 100644
--- a/roles/wireguard/tasks/main.yml
+++ b/roles/wireguard/tasks/main.yml
@@ -22,9 +22,37 @@
state: restarted
when: config.changed
-- name: Set up service dependencies
+- name: Set up service dependencies for the interface
ansible.builtin.include_role:
name: systemd_depend_iface
vars:
systemd_depend_iface_name: '{{ wg_name }}'
systemd_depend_iface_services: '{{ wg_dependent_services }}'
+
+- name: Create override directory for services
+ become: true
+ ansible.builtin.file:
+ path: '/etc/systemd/system/{{ service }}.service.d'
+ state: directory
+ owner: root
+ group: root
+ mode: '755'
+ loop: '{{ wg_dependent_services }}'
+ loop_control:
+ loop_var: service
+
+- name: Set up service dependencies for wg-quick
+ become: true
+ ansible.builtin.template:
+ src: depend_service_wg-quick.conf.j2
+ dest: '/etc/systemd/system/{{ service }}.service.d/depend_service_wg-quick@{{ wg_name }}.conf'
+ owner: root
+ group: root
+ mode: '644'
+ notify: wireguard_reload
+ loop: '{{ wg_dependent_services }}'
+ loop_control:
+ loop_var: service
+
+- name: Reload systemd services if necessary
+ ansible.builtin.meta: flush_handlers
diff --git a/roles/wireguard/templates/depend_service_wg-quick.conf.j2 b/roles/wireguard/templates/depend_service_wg-quick.conf.j2
new file mode 100644
index 0000000..b40e6eb
--- /dev/null
+++ b/roles/wireguard/templates/depend_service_wg-quick.conf.j2
@@ -0,0 +1,7 @@
+{{ ansible_managed | comment }}
+
+[Unit]
+# This is required so that systemd actually starts the wg-quick service before
+# the dependants. We also set up the actual dependency on the interface so that
+# the dependants actually start after the interface is up.
+After=wg-quick@{{ wg_name }}.service