From 2cf68c2d305f24036bef429c1ef3637a9eb09a81 Mon Sep 17 00:00:00 2001 From: Daniel Allaire Date: Thu, 10 Sep 2026 13:29:25 -0400 Subject: [PATCH] hosts_statiques : une garde qui survit a ce qu elle gardait Le role pose /etc/cloud/templates/hosts.debian.tmpl - le gabarit maitre dont cloud-init regenere /etc/hosts au demarrage. Or D-85 fait retirer cloud-init par serveur_durci, et le repertoire part avec lui. L echec n avait aucun sens : ce gabarit ne sert qu a survivre a une reecriture qui n a plus lieu. Plus de cloud-init, plus de reecriture, le plancher tient tout seul - c est le resultat recherche par D-85. CE QUE CA A COUTE. _amorcer-socle monte infra-pki-01 et infra-dns-01 en entier d abord, durcissement compris. La tache echouait au second passage, l hote sortait du play, et TOUT ce qui suivait n etait jamais pose - dont icinga-ca.crt. Leur porteur de sante tournait ensuite normalement et chaque rapport echouait sur curl: (77), en silence. Un echec bruyant au bon endroit avait produit une panne muette ailleurs. Et sauter la tache seule aurait deplace l echec d un cran : la garde qui suit compare le nombre d entrees du plancher a celui du gabarit, donc 21 contre 0. Elle accuserait une divergence la ou il ne reste qu un fichier. Une garde qui survit a ce qu elle gardait ne mesure plus rien : elle invente. Les trois taches suivent desormais la meme condition. Verifie sur les deux machines memes qui echouaient : failed=0. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q --- CHANGELOG.md | 39 ++++++++++++++++++++++++++++ roles/hosts_statiques/tasks/main.yml | 33 +++++++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 50dd00d..c13a774 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,44 @@ # CHANGELOG — Set-OPS +## 2026-09-10 (8) — Une garde qui survit a ce qu'elle gardait + +Le defaut le plus couteux de la reconstruction, corrige. Il n'arretait rien de visible : +il faisait **taire** la supervision de deux machines. + +`hosts_statiques` pose `/etc/cloud/templates/hosts.debian.tmpl` — le gabarit maitre dont +cloud-init regenere `/etc/hosts` a chaque demarrage. Or **D-85 fait retirer cloud-init** +par `serveur_durci`. Le repertoire part avec lui : + + Destination directory /etc/cloud/templates does not exist + +L'echec n'a aucun sens : ce gabarit ne sert qu'a survivre a une reecriture qui n'a plus +lieu. Plus de cloud-init, plus de reecriture — le plancher tient tout seul, **ce qui est +le resultat recherche par D-85**. + +### Ce que ca a coute, et pourquoi c'etait invisible + +`_amorcer-socle` monte `infra-pki-01` et `infra-dns-01` EN ENTIER d'abord, durcissement +compris. Cloud-init y est donc deja parti quand la flotte rejoue `hosts_statiques`. La +tache echouait, **l'hote sortait du play — et tout ce qui suivait n'etait jamais pose**, +dont `icinga-ca.crt`. Leur porteur de sante s'installait ensuite normalement, tournait, et +chaque rapport echouait sur `curl: (77) error setting certificate file`. + +Deux machines ont supervise dans le vide sans que rien ne le dise. *Un echec bruyant au +bon endroit avait produit une panne muette ailleurs.* + +### Et le correctif evident aurait deplace l'echec d'un cran + +Sauter la tache ne suffisait pas : la garde qui SUIT compare le nombre d'entrees du +plancher a celui du gabarit maitre. Sans gabarit, elle compare 21 a 0 et echoue — elle +accuserait une divergence la ou il ne reste qu'un seul fichier. + +**Une garde qui survit a ce qu'elle gardait ne mesure plus rien : elle invente.** Les trois +taches — pose, releve, assertion — suivent desormais la meme condition : le repertoire des +gabarits maitres existe-t-il encore ? + +Verifie sur les deux machines memes qui echouaient : `failed=0`, cloud-init absent, +plancher a 21 entrees. + ## 2026-09-10 (7) — D-86 mis a l'epreuve : Chezlepro rasee et refaite depuis zero Quatorze machines detruites, quatorze refaites. **1 h 08**, 0 injoignable. La reconstruction diff --git a/roles/hosts_statiques/tasks/main.yml b/roles/hosts_statiques/tasks/main.yml index c185364..4836287 100644 --- a/roles/hosts_statiques/tasks/main.yml +++ b/roles/hosts_statiques/tasks/main.yml @@ -139,6 +139,30 @@ # # Le gabarit d'origine le documente lui-meme : « make changes to the master file in # /etc/cloud/templates/hosts.debian.tmpl ». +# ... MAIS SEULEMENT TANT QUE CLOUD-INIT EST LA (2026-09-10). +# +# D-85 fait RETIRER cloud-init par `serveur_durci`. Le repertoire des gabarits maitres +# part avec lui, et cette tache echoue alors sur : +# +# Destination directory /etc/cloud/templates does not exist +# +# Or l'echec n'a aucun sens : ce gabarit ne sert qu'a une chose, survivre a la reecriture +# de `/etc/hosts` par cloud-init au demarrage. Plus de cloud-init, plus de reecriture — +# le plancher tient tout seul, ce qui EST le resultat recherche par D-85. +# +# CE QUE CA A COUTE (reconstruction du 2026-09-10). `_amorcer-socle` monte `infra-pki-01` +# et `infra-dns-01` EN ENTIER d'abord, durcissement compris : cloud-init y est donc deja +# parti quand la flotte rejoue `hosts_statiques`. La tache echouait, l'hote sortait du +# play — et TOUT ce qui suivait dans ce play n'etait jamais pose, dont `icinga-ca.crt`. +# Leur porteur de sante tournait ensuite normalement et chaque rapport echouait sur +# `curl: (77)`, en silence. Deux machines ont supervise dans le vide sans que rien ne le +# dise : un echec bruyant au bon endroit avait produit une panne muette ailleurs. +- name: Le gabarit maître de cloud-init existe-t-il encore ? + ansible.builtin.stat: + path: /etc/cloud/templates + register: hosts_statiques_gabarits_cloud_init + when: hosts_statiques_actif | bool + - name: Poser le plancher dans le gabarit maître de cloud-init (il survit au démarrage) ansible.builtin.template: src: hosts.debian.tmpl.j2 @@ -149,6 +173,7 @@ when: - hosts_statiques_actif | bool - ansible_facts.os_family | default('') == 'Debian' + - hosts_statiques_gabarits_cloud_init.stat.isdir | default(false) # LA GARDE MESURE LE FAIT QUI COMPTE (2026-08-25). # @@ -174,6 +199,8 @@ when: - hosts_statiques_actif | bool - ansible_facts.os_family | default('') == 'Debian' + # Rien a relever quand le gabarit maitre n'existe plus (cloud-init retire, D-85). + - hosts_statiques_gabarits_cloud_init.stat.isdir | default(false) - name: Refuser que le plancher et son gabarit maître divergent ansible.builtin.assert: @@ -196,3 +223,9 @@ when: - hosts_statiques_actif | bool - ansible_facts.os_family | default('') == 'Debian' + # LA GARDE SUIT SON OBJET. Elle protege le plancher d'une REECRITURE par cloud-init ; + # sans cloud-init, il n'y a plus de reecriture et plus de gabarit a comparer. La + # laisser tourner ferait echouer sur « 34 contre 0 » — c'est-a-dire accuser une + # divergence la ou il n'y a plus qu'un seul fichier. Une garde qui survit a ce qu'elle + # gardait ne mesure plus rien : elle invente. + - hosts_statiques_gabarits_cloud_init.stat.isdir | default(false)