From 78f6fb186bb8b68bc861f0e7ceda3373e768c281 Mon Sep 17 00:00:00 2001 From: Michael Schiemer Date: Sun, 9 Nov 2025 01:18:12 +0100 Subject: [PATCH] fix: bind wait/healthcheck tasks to traefik_restart.changed - fix-gitea-timeouts.yml: Add when conditions to wait_for and uri tasks - Wait for Traefik only if traefik_restart.changed - Wait for Gitea via Traefik only if traefik_restart or gitea_restart changed - fix-gitea-complete.yml: Same fixes as fix-gitea-timeouts.yml - Wait for Traefik only if traefik_restart.changed - Wait for Gitea and service discovery checks only if restart occurred - fix-gitea-traefik-connection.yml: Fix wait and test tasks - Register traefik_restart to track if restart happened - Wait for Traefik only if traefik_restart.changed - Test Gitea via Traefik only if traefik_restart.changed - Update message to reflect actual restart status - update-gitea-traefik-service.yml: Fix pause block - Register traefik_restart to track if restart happened - Wait for Traefik only if traefik_restart.changed This prevents unnecessary blocking when traefik_auto_restart=false and ensures wait/healthcheck tasks only run when a restart actually occurred. --- deployment/ansible/playbooks/fix-gitea-complete.yml | 3 +++ deployment/ansible/playbooks/fix-gitea-timeouts.yml | 2 ++ .../playbooks/fix-gitea-traefik-connection.yml | 13 +++++++++---- .../playbooks/update-gitea-traefik-service.yml | 3 +++ 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/deployment/ansible/playbooks/fix-gitea-complete.yml b/deployment/ansible/playbooks/fix-gitea-complete.yml index d0f901df..8e867420 100644 --- a/deployment/ansible/playbooks/fix-gitea-complete.yml +++ b/deployment/ansible/playbooks/fix-gitea-complete.yml @@ -88,6 +88,7 @@ timeout: 30 delay: 2 changed_when: false + when: traefik_restart.changed | default(false) | bool - name: Wait for Gitea to be reachable via Traefik (with retries) ansible.builtin.uri: @@ -102,6 +103,7 @@ delay: 2 changed_when: false failed_when: false + when: (traefik_restart.changed | default(false) | bool) or (gitea_restart.changed | default(false) | bool) - name: Check if Gitea is in Traefik service discovery ansible.builtin.shell: | @@ -110,6 +112,7 @@ register: traefik_gitea_service_check changed_when: false failed_when: false + when: (traefik_restart.changed | default(false) | bool) or (gitea_restart.changed | default(false) | bool) - name: Final status check ansible.builtin.uri: diff --git a/deployment/ansible/playbooks/fix-gitea-timeouts.yml b/deployment/ansible/playbooks/fix-gitea-timeouts.yml index 332b6cc6..1b094c89 100644 --- a/deployment/ansible/playbooks/fix-gitea-timeouts.yml +++ b/deployment/ansible/playbooks/fix-gitea-timeouts.yml @@ -86,6 +86,7 @@ timeout: 30 delay: 2 changed_when: false + when: traefik_restart.changed | default(false) | bool - name: Wait for Gitea to be reachable via Traefik ansible.builtin.uri: @@ -100,6 +101,7 @@ delay: 2 changed_when: false failed_when: false + when: (traefik_restart.changed | default(false) | bool) or (gitea_restart.changed | default(false) | bool) - name: Check final Gitea container status ansible.builtin.shell: | diff --git a/deployment/ansible/playbooks/fix-gitea-traefik-connection.yml b/deployment/ansible/playbooks/fix-gitea-traefik-connection.yml index a018e801..1c1d32b4 100644 --- a/deployment/ansible/playbooks/fix-gitea-traefik-connection.yml +++ b/deployment/ansible/playbooks/fix-gitea-traefik-connection.yml @@ -60,11 +60,13 @@ when: > traefik_gitea_test.rc != 0 and (traefik_auto_restart | default(false) | bool) + register: traefik_restart + changed_when: traefik_restart.rc == 0 - name: Wait for Traefik to be ready pause: seconds: 10 - when: traefik_gitea_test.rc != 0 + when: traefik_restart.changed | default(false) | bool - name: Test Gitea via Traefik uri: @@ -75,15 +77,18 @@ timeout: 10 register: final_test changed_when: false + when: traefik_restart.changed | default(false) | bool - name: Display result debug: msg: | Gitea-Traefik connection test: - Direct connection: {{ 'OK' if traefik_gitea_test.rc == 0 else 'FAILED' }} - - Via Traefik: {{ 'OK' if final_test.status == 200 else 'FAILED' }} + - Via Traefik: {{ 'OK' if (final_test.status | default(0) == 200) else 'FAILED' if (traefik_restart.changed | default(false) | bool) else 'SKIPPED (no restart)' }} - {% if traefik_gitea_test.rc != 0 %} - Both services have been restarted to refresh connections. + {% if traefik_restart.changed | default(false) | bool %} + Traefik has been restarted to refresh service discovery. + {% elif traefik_gitea_test.rc != 0 %} + Note: Traefik restart was skipped (traefik_auto_restart=false). Direct connection test failed. {% endif %} diff --git a/deployment/ansible/playbooks/update-gitea-traefik-service.yml b/deployment/ansible/playbooks/update-gitea-traefik-service.yml index 8c63e6d6..4cf3574b 100644 --- a/deployment/ansible/playbooks/update-gitea-traefik-service.yml +++ b/deployment/ansible/playbooks/update-gitea-traefik-service.yml @@ -51,10 +51,13 @@ shell: | docker compose -f {{ traefik_stack_path }}/docker-compose.yml restart traefik when: traefik_auto_restart | default(false) | bool + register: traefik_restart + changed_when: traefik_restart.rc == 0 - name: Wait for Traefik to be ready pause: seconds: 10 + when: traefik_restart.changed | default(false) | bool - name: Test Gitea via Traefik uri: