From f82630de6c47c6b3cc657193cd89ba82694e1912 Mon Sep 17 00:00:00 2001 From: Daniel Allaire Date: Wed, 1 Jul 2026 21:01:53 -0400 Subject: [PATCH] =?UTF-8?q?Rendre=20le=20dry-run=20(--check)=20fiable=20su?= =?UTF-8?q?r=20les=20r=C3=B4les=20applicatifs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit « Vérifier » échouait faussement sur un hôte frais : les tâches « démarrer service » et les handlers restart/reload/validate touchent un paquet que --check n'installe pas vraiment → service/fichier absent → faux fatal, qui bloquait le déploiement (le dry-run doit passer pour débloquer « Déployer »). Ajout de « when: not ansible_check_mode » sur ces tâches + handlers des 13 rôles serveur_* (29 gardes). Sautées en dry-run, inchangées en réel. Validé : powerdns dry-run failed=0 ; ansible-lint 0 échec ; 19 playbooks syntax-OK. Co-Authored-By: Claude Opus 4.8 --- CHANGELOG.md | 7 +++++++ roles/serveur_forgejo/handlers/main.yml | 1 + roles/serveur_forgejo/tasks/main.yml | 1 + roles/serveur_grafana/handlers/main.yml | 1 + roles/serveur_grafana/tasks/main.yml | 1 + roles/serveur_icinga/handlers/main.yml | 2 ++ roles/serveur_icinga/tasks/main.yml | 2 ++ roles/serveur_keycloak/handlers/main.yml | 1 + roles/serveur_keycloak/tasks/main.yml | 1 + roles/serveur_loki/handlers/main.yml | 1 + roles/serveur_loki/tasks/main.yml | 1 + roles/serveur_nginx/handlers/main.yml | 2 ++ roles/serveur_nginx/tasks/main.yml | 1 + roles/serveur_openldap/tasks/main.yml | 1 + roles/serveur_postgresql/handlers/main.yml | 2 ++ roles/serveur_postgresql/tasks/main.yml | 1 + roles/serveur_powerdns/handlers/main.yml | 2 ++ roles/serveur_powerdns/tasks/main.yml | 4 ++++ roles/serveur_prometheus/handlers/main.yml | 2 ++ roles/serveur_prometheus/tasks/main.yml | 1 + roles/serveur_redis/handlers/main.yml | 1 + roles/serveur_redis/tasks/main.yml | 1 + roles/serveur_sendmail/handlers/main.yml | 2 ++ roles/serveur_sendmail/tasks/main.yml | 1 + roles/serveur_step_ca/handlers/main.yml | 1 + roles/serveur_step_ca/tasks/main.yml | 1 + 26 files changed, 42 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c871a0..9923a60 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,13 @@ - **Compteur « vivantes »** dans l'en-tête (depuis la sonde), à côté de actifs/planifiés. ### Corrigé +- **« Vérifier » (dry-run `--check`) échouait faussement sur un hôte frais.** Les tâches + « démarrer service » et les handlers « redémarrer / recharger / valider » des rôles + applicatifs touchent un paquet que `--check` n'installe pas réellement → le service + (ou le fichier de zone/conf) n'existe pas encore → faux `fatal`, qui **bloquait le + déploiement** (le dry-run doit réussir pour débloquer « Déployer »). Ajout de + `when: not ansible_check_mode` sur ces tâches et handlers des 13 rôles `serveur_*` + (29 gardes). En dry-run elles sont sautées ; en vrai déploiement, inchangées. - **Le bouton ⚙ « Appliquer le plan » du GUI refusait en silence** dès que le plan divergeait de l'inventaire (il appelait `instancier appliquer` **sans** `--force`). Résultat : après une édition (disque, état, auto-actif), l'inventaire n'était jamais diff --git a/roles/serveur_forgejo/handlers/main.yml b/roles/serveur_forgejo/handlers/main.yml index bfddc5a..584b1c8 100644 --- a/roles/serveur_forgejo/handlers/main.yml +++ b/roles/serveur_forgejo/handlers/main.yml @@ -1,5 +1,6 @@ --- - name: Redemarrer forgejo + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_forgejo_service }}" state: restarted diff --git a/roles/serveur_forgejo/tasks/main.yml b/roles/serveur_forgejo/tasks/main.yml index 923c6fc..74e9778 100644 --- a/roles/serveur_forgejo/tasks/main.yml +++ b/roles/serveur_forgejo/tasks/main.yml @@ -104,6 +104,7 @@ notify: Redemarrer forgejo - name: Activer et demarrer Forgejo + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_forgejo_service }}" enabled: true diff --git a/roles/serveur_grafana/handlers/main.yml b/roles/serveur_grafana/handlers/main.yml index 0ca026e..c9201a8 100644 --- a/roles/serveur_grafana/handlers/main.yml +++ b/roles/serveur_grafana/handlers/main.yml @@ -1,5 +1,6 @@ --- - name: Redemarrer grafana + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_grafana_service }}" state: restarted diff --git a/roles/serveur_grafana/tasks/main.yml b/roles/serveur_grafana/tasks/main.yml index e19e773..b21bd84 100644 --- a/roles/serveur_grafana/tasks/main.yml +++ b/roles/serveur_grafana/tasks/main.yml @@ -61,6 +61,7 @@ notify: Redemarrer grafana - name: Activer et demarrer Grafana + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_grafana_service }}" enabled: true diff --git a/roles/serveur_icinga/handlers/main.yml b/roles/serveur_icinga/handlers/main.yml index 24233e5..830cf61 100644 --- a/roles/serveur_icinga/handlers/main.yml +++ b/roles/serveur_icinga/handlers/main.yml @@ -1,11 +1,13 @@ --- - name: Redemarrer icinga2 + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_icinga_service_icinga2 }}" state: restarted listen: Redemarrer icinga2 - name: Redemarrer icingadb + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_icinga_service_icingadb }}" state: restarted diff --git a/roles/serveur_icinga/tasks/main.yml b/roles/serveur_icinga/tasks/main.yml index 4e7f2e3..d1a4a16 100644 --- a/roles/serveur_icinga/tasks/main.yml +++ b/roles/serveur_icinga/tasks/main.yml @@ -65,6 +65,7 @@ notify: Redemarrer icinga2 - name: Activer et demarrer le Redis Icinga DB + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_icinga_service_redis }}" enabled: true @@ -91,6 +92,7 @@ notify: Redemarrer icingadb - name: Activer et demarrer Icinga 2 et Icinga DB + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ item }}" enabled: true diff --git a/roles/serveur_keycloak/handlers/main.yml b/roles/serveur_keycloak/handlers/main.yml index 37f1c47..61627b2 100644 --- a/roles/serveur_keycloak/handlers/main.yml +++ b/roles/serveur_keycloak/handlers/main.yml @@ -1,5 +1,6 @@ --- - name: Redemarrer keycloak + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_keycloak_service }}" state: restarted diff --git a/roles/serveur_keycloak/tasks/main.yml b/roles/serveur_keycloak/tasks/main.yml index 95f200f..6b9534e 100644 --- a/roles/serveur_keycloak/tasks/main.yml +++ b/roles/serveur_keycloak/tasks/main.yml @@ -122,6 +122,7 @@ notify: Redemarrer keycloak - name: Activer et demarrer keycloak + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_keycloak_service }}" enabled: true diff --git a/roles/serveur_loki/handlers/main.yml b/roles/serveur_loki/handlers/main.yml index 959f819..6685400 100644 --- a/roles/serveur_loki/handlers/main.yml +++ b/roles/serveur_loki/handlers/main.yml @@ -1,5 +1,6 @@ --- - name: Redemarrer loki + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_loki_service }}" state: restarted diff --git a/roles/serveur_loki/tasks/main.yml b/roles/serveur_loki/tasks/main.yml index 3e11112..d454ade 100644 --- a/roles/serveur_loki/tasks/main.yml +++ b/roles/serveur_loki/tasks/main.yml @@ -45,6 +45,7 @@ notify: Redemarrer loki - name: Activer et demarrer Loki + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_loki_service }}" enabled: true diff --git a/roles/serveur_nginx/handlers/main.yml b/roles/serveur_nginx/handlers/main.yml index babb941..bbfb1c0 100644 --- a/roles/serveur_nginx/handlers/main.yml +++ b/roles/serveur_nginx/handlers/main.yml @@ -1,11 +1,13 @@ --- - name: Valider la configuration nginx + when: not ansible_check_mode ansible.builtin.command: cmd: nginx -t changed_when: false listen: Valider et recharger nginx - name: Recharger nginx + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_nginx_service_name }}" state: reloaded diff --git a/roles/serveur_nginx/tasks/main.yml b/roles/serveur_nginx/tasks/main.yml index 464302a..e79c7b5 100644 --- a/roles/serveur_nginx/tasks/main.yml +++ b/roles/serveur_nginx/tasks/main.yml @@ -79,6 +79,7 @@ notify: Valider et recharger nginx - name: Activer et demarrer nginx + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_nginx_service_name }}" enabled: true diff --git a/roles/serveur_openldap/tasks/main.yml b/roles/serveur_openldap/tasks/main.yml index a3dc273..ffa1e37 100644 --- a/roles/serveur_openldap/tasks/main.yml +++ b/roles/serveur_openldap/tasks/main.yml @@ -41,6 +41,7 @@ cache_valid_time: 3600 - name: Activer et demarrer slapd + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_openldap_service }}" enabled: true diff --git a/roles/serveur_postgresql/handlers/main.yml b/roles/serveur_postgresql/handlers/main.yml index 65089d5..4073f35 100644 --- a/roles/serveur_postgresql/handlers/main.yml +++ b/roles/serveur_postgresql/handlers/main.yml @@ -1,10 +1,12 @@ --- - name: Recharger PostgreSQL + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_postgresql_service_name }}" state: reloaded - name: Redemarrer PostgreSQL + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_postgresql_service_name }}" state: restarted diff --git a/roles/serveur_postgresql/tasks/main.yml b/roles/serveur_postgresql/tasks/main.yml index 1b61d85..705a83c 100644 --- a/roles/serveur_postgresql/tasks/main.yml +++ b/roles/serveur_postgresql/tasks/main.yml @@ -56,6 +56,7 @@ notify: Recharger PostgreSQL - name: Activer et demarrer PostgreSQL + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_postgresql_service_name }}" enabled: true diff --git a/roles/serveur_powerdns/handlers/main.yml b/roles/serveur_powerdns/handlers/main.yml index 4678271..b2a03e7 100644 --- a/roles/serveur_powerdns/handlers/main.yml +++ b/roles/serveur_powerdns/handlers/main.yml @@ -3,10 +3,12 @@ ansible.builtin.command: cmd: "named-checkzone {{ serveur_powerdns_zone }} {{ serveur_powerdns_zone_directory }}/{{ serveur_powerdns_zone }}.zone" changed_when: false + when: not ansible_check_mode # en dry-run le fichier de zone n'existe pas encore listen: Validate and reload PowerDNS - name: Restart PowerDNS ansible.builtin.systemd: name: "{{ serveur_powerdns_service_name }}" state: restarted + when: not ansible_check_mode # en dry-run le service n'existe pas encore listen: Validate and reload PowerDNS diff --git a/roles/serveur_powerdns/tasks/main.yml b/roles/serveur_powerdns/tasks/main.yml index 6d661af..4a6aaea 100644 --- a/roles/serveur_powerdns/tasks/main.yml +++ b/roles/serveur_powerdns/tasks/main.yml @@ -46,3 +46,7 @@ name: "{{ serveur_powerdns_service_name }}" enabled: true state: started + # Dry-run (--check) : le paquet n'est pas reellement installe, donc le service + # n'existe pas encore et systemd echouerait. On saute en mode check seulement ; + # en vrai deploiement, la tache s'execute normalement. + when: not ansible_check_mode diff --git a/roles/serveur_prometheus/handlers/main.yml b/roles/serveur_prometheus/handlers/main.yml index 769549c..b3ad2c2 100644 --- a/roles/serveur_prometheus/handlers/main.yml +++ b/roles/serveur_prometheus/handlers/main.yml @@ -1,11 +1,13 @@ --- - name: Valider la configuration prometheus + when: not ansible_check_mode ansible.builtin.command: cmd: "promtool check config {{ serveur_prometheus_config }}" changed_when: false listen: Valider et recharger prometheus - name: Redemarrer prometheus + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_prometheus_service }}" state: restarted diff --git a/roles/serveur_prometheus/tasks/main.yml b/roles/serveur_prometheus/tasks/main.yml index 20a2a3d..fe6636e 100644 --- a/roles/serveur_prometheus/tasks/main.yml +++ b/roles/serveur_prometheus/tasks/main.yml @@ -25,6 +25,7 @@ notify: Valider et recharger prometheus - name: Activer et demarrer Prometheus + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_prometheus_service }}" enabled: true diff --git a/roles/serveur_redis/handlers/main.yml b/roles/serveur_redis/handlers/main.yml index d743c3d..d347083 100644 --- a/roles/serveur_redis/handlers/main.yml +++ b/roles/serveur_redis/handlers/main.yml @@ -1,5 +1,6 @@ --- - name: Redemarrer redis + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_redis_service }}" state: restarted diff --git a/roles/serveur_redis/tasks/main.yml b/roles/serveur_redis/tasks/main.yml index 8449c5c..d5c0d6d 100644 --- a/roles/serveur_redis/tasks/main.yml +++ b/roles/serveur_redis/tasks/main.yml @@ -31,6 +31,7 @@ notify: Redemarrer redis - name: Activer et demarrer Redis + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_redis_service }}" enabled: true diff --git a/roles/serveur_sendmail/handlers/main.yml b/roles/serveur_sendmail/handlers/main.yml index ac565ce..170864b 100644 --- a/roles/serveur_sendmail/handlers/main.yml +++ b/roles/serveur_sendmail/handlers/main.yml @@ -1,11 +1,13 @@ --- - name: Verifier la configuration Postfix + when: not ansible_check_mode ansible.builtin.command: cmd: postfix check changed_when: false listen: Valider et recharger postfix - name: Recharger postfix + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_sendmail_service_name }}" state: reloaded diff --git a/roles/serveur_sendmail/tasks/main.yml b/roles/serveur_sendmail/tasks/main.yml index 25c6763..0f21331 100644 --- a/roles/serveur_sendmail/tasks/main.yml +++ b/roles/serveur_sendmail/tasks/main.yml @@ -28,6 +28,7 @@ notify: Valider et recharger postfix - name: Activer et demarrer Postfix + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_sendmail_service_name }}" enabled: true diff --git a/roles/serveur_step_ca/handlers/main.yml b/roles/serveur_step_ca/handlers/main.yml index 71d739f..fe686b2 100644 --- a/roles/serveur_step_ca/handlers/main.yml +++ b/roles/serveur_step_ca/handlers/main.yml @@ -1,5 +1,6 @@ --- - name: Redemarrer step-ca + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_step_ca_service }}" state: restarted diff --git a/roles/serveur_step_ca/tasks/main.yml b/roles/serveur_step_ca/tasks/main.yml index 22cb249..85c7bad 100644 --- a/roles/serveur_step_ca/tasks/main.yml +++ b/roles/serveur_step_ca/tasks/main.yml @@ -101,6 +101,7 @@ notify: Redemarrer step-ca - name: Activer et demarrer step-ca + when: not ansible_check_mode ansible.builtin.systemd: name: "{{ serveur_step_ca_service }}" enabled: true