From dee861448236619b47b4711c9e9b2e9d0c965530 Mon Sep 17 00:00:00 2001 From: Konstantin Renner Date: Fri, 26 Jun 2026 14:24:42 +0200 Subject: [PATCH] woodpecker-agent: force a docker restart if IPv6 isn't actually active The self-deploy restarts were unreliable, so Docker may have the daemon.json on disk but never reloaded it. Check docker bridge EnableIPv6 and, if not active, schedule a deferred restart. Idempotent once v6 is live. The check result also surfaces (in the deploy log) whether Docker had v6 at all. Co-Authored-By: Claude Opus 4.8 (1M context) --- ansible/roles/woodpecker-agent/tasks/main.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/ansible/roles/woodpecker-agent/tasks/main.yml b/ansible/roles/woodpecker-agent/tasks/main.yml index aacca355..ba93ef79 100644 --- a/ansible/roles/woodpecker-agent/tasks/main.yml +++ b/ansible/roles/woodpecker-agent/tasks/main.yml @@ -7,6 +7,25 @@ when: woodpecker_agent_docker_ipv6 | bool notify: Restart docker +# The daemon.json change only restarts Docker on change; the earlier +# self-deploy restarts were unreliable, so verify Docker actually loaded the +# IPv6 config and force a (deferred) restart if not — idempotent once active. +- name: Check whether Docker already has IPv6 active on the default bridge + ansible.builtin.command: "docker network inspect bridge --format '{% raw %}{{.EnableIPv6}}{% endraw %}'" + register: _docker_bridge_v6 + changed_when: false + failed_when: false + when: woodpecker_agent_docker_ipv6 | bool + +- name: Force a deferred Docker restart if IPv6 isn't active yet + ansible.builtin.command: >- + systemd-run --on-active=15s --timer-property=AccuracySec=100ms + systemctl restart docker + when: + - woodpecker_agent_docker_ipv6 | bool + - "'true' not in (_docker_bridge_v6.stdout | default('') | lower)" + changed_when: true + - name: Create Woodpecker agent directory file: path: "{{ woodpecker_agent_compose_dir }}" -- 2.54.0