From 381f3ab7c97927cb11403d8d6f35f4fb18ebd585 Mon Sep 17 00:00:00 2001 From: Ruakij Date: Fri, 9 Oct 2026 14:37:24 +0000 Subject: [PATCH] Start the wireguard-ipv6-converter again whenever its bound service starts via a drop-in and always restart it on deploy --- .../tasks/setup-service.yml | 22 ++++++++++++++++++- .../wg-ipv6-conv-restart.conf.jinja2 | 7 ++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 wireguard-ipv6-converter/templates/wg-ipv6-conv-restart.conf.jinja2 diff --git a/wireguard-ipv6-converter/tasks/setup-service.yml b/wireguard-ipv6-converter/tasks/setup-service.yml index 9519768..d5d5db9 100644 --- a/wireguard-ipv6-converter/tasks/setup-service.yml +++ b/wireguard-ipv6-converter/tasks/setup-service.yml @@ -10,10 +10,30 @@ daemon-reload: true enabled: true +- name: Ensure drop-in directory for the bound service exists + ansible.builtin.file: + path: /etc/systemd/system/{{ wireguard_ipv6_converter.service.bindTo }}.d + state: directory + mode: "0755" + when: "wireguard_ipv6_converter.service.bindTo is defined" + +- name: Deploy start-propagation drop-in for the bound service + ansible.builtin.template: + src: wg-ipv6-conv-restart.conf.jinja2 + dest: /etc/systemd/system/{{ wireguard_ipv6_converter.service.bindTo }}.d/10-wg-ipv6-converter_{{ wireguard_ipv6_converter.setup.interface }}.conf + mode: "0644" + when: "wireguard_ipv6_converter.service.bindTo is defined" + register: upholdsFile + +- name: Reload systemd for drop-in + ansible.builtin.systemd: + daemon_reload: true + when: "upholdsFile.changed" + - name: Start service if interface exists already ansible.builtin.service: name: wg-ipv6-converter_{{ wireguard_ipv6_converter.setup.interface }} - state: "{{ 'restarted' if deployDownload.changed or serviceFile.changed else 'started' }}" + state: "restarted" register: service when: "wireguard_ipv6_converter.setup.interface in ansible_interfaces" diff --git a/wireguard-ipv6-converter/templates/wg-ipv6-conv-restart.conf.jinja2 b/wireguard-ipv6-converter/templates/wg-ipv6-conv-restart.conf.jinja2 new file mode 100644 index 0000000..768df34 --- /dev/null +++ b/wireguard-ipv6-converter/templates/wg-ipv6-conv-restart.conf.jinja2 @@ -0,0 +1,7 @@ +# BindsTo= in the converter unit only propagates stop, so a restart of +# {{ wireguard_ipv6_converter.service.bindTo }} leaves the converter dead and the re-created +# interface without its IPv6 addresses. Start it again whenever +# {{ wireguard_ipv6_converter.service.bindTo }} starts. --no-block because the converter orders +# itself After={{ wireguard_ipv6_converter.service.bindTo }}. +[Service] +ExecStartPost=/bin/systemctl --no-block start wg-ipv6-converter_{{ wireguard_ipv6_converter.setup.interface }}.service