Start the wireguard-ipv6-converter again whenever its bound service starts via a drop-in and always restart it on deploy

This commit is contained in:
2026-10-09 14:37:24 +00:00
parent 6390e6288b
commit 381f3ab7c9
2 changed files with 28 additions and 1 deletions
@@ -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"
@@ -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