sonde depot : prouvee, et le chemin qu il a fallu ouvrir pour y arriver

Depot sain code 0 avec 4 depots et 374G libres. Chemin non inscriptible code 2.
Chemin inexistant code 2. Zero temoin residuel dans le vrai depot.

Pour y arriver il a fallu que le runner du site puisse entrer chez lui — ce
qu il ne savait pas faire. Trois causes empilees, dont une que j ai ecrite en
corrigeant les deux autres.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
This commit is contained in:
Daniel Allaire 2026-09-14 10:23:42 -04:00
parent 9709817be6
commit 52b9d31a5d

View file

@ -1,5 +1,65 @@
# CHANGELOG — Set-OPS
## 2026-09-14 (5) — Le site ne savait pas se configurer lui-meme
Parti pour eprouver une sonde, arrive sur un defaut structurel : **le runner du SITE ne
pouvait entrer sur aucune machine du site**. Il sait inseminer un locataire — c'est prouve
— et il ne savait pas configurer l'hebergeur qui le porte. Tout le site avait donc ete
deploye depuis le poste de l'exploitant, et rien ne disait que c'etait la seule voie.
### Trois causes empilees, et un message qui accusait la mauvaise
1. **Le site n'avait aucun moyen d'autoriser une cle d'administration.** Un locataire
declare `ssh_baseline_cles_admin` ; cote site, rien ne transmettait cette liste. Ses
machines n'autorisaient que la cle posee par cloud-init.
2. **Le rebond etait pose sans condition**, y compris pour un controleur vivant DANS le
site. Il devait alors s'authentifier aupres de la frontiere, ou sa cle n'est pas
autorisee. OpenSSH rend alors :
Host key verification failed.
Connection closed by UNKNOWN port 65535
— un message qui accuse les cles d'HOTE alors que l'echec est une AUTHENTIFICATION, et
sur le SAUTEUR, pas sur la cible.
3. **`cle_ssh` designe le chemin de la cle SUR LE POSTE.** Impose au runner, il nomme un
fichier qui n'existe pas chez lui.
Le rebond et la cle decrivent tous deux **comment on arrive**, pas ce vers quoi on va. Ce
qui depend de l'endroit d'ou l'on part n'a pas sa place dans la description d'un site.
### La faute que j'ai ecrite en corrigeant, et qui merite d'etre gardee
La fonction qui repond « suis-je une machine du site » appelait `underlay_mod` — un nom
qui n'existe pas dans ce fichier, le module y etant importe `as U`. Python levait un
`AttributeError` a chaque appel, et le `except Exception: return False` le rendait **muet**.
La fonction repondait donc toujours *non*, le rebond etait toujours pose, et rien ne le
disait. **Une garde qui se tait ne garde rien** — le defaut exact que ce depot traque
ailleurs, ecrit ici. Le `except` ne couvre plus qu'un plan illisible ; une faute de
programmation remonte.
Le critere lui-meme a demande trois formulations : « dans un RESEAU du site » (faux, le
poste porte `10.37.0.17`), « dans `underlay.hotes` » (faux, `hotes` ne contient que les
equipements), puis **par le NOM** — le runner s'appelle `site-ops-01`, une cle du plan.
### L'amorcage est circulaire, et il se rompt par le poste
Lui seul entrait : il pose la cle, le runner devient autonome. Verifie apres
`make site-appliquer GROUPE=serveur_debian` — **7/7, 0 echec** — puis **5/5** machines
atteintes par le runner, qui a ensuite configure `site-backup-01` lui-meme.
### Et la sonde, enfin prouvee
| | verdict | code |
|---|---|---|
| depot sain | `accepte l'ecriture — 4 depot(s), 374G libres` | **0** |
| chemin non inscriptible | `refuse l'ecriture pour restic` | **2** |
| chemin inexistant | `n'existe pas` | **2** |
Le vrai depot n'a pas bouge : zero fichier temoin residuel.
## 2026-09-14 (4) — Les greffons standard manquaient a la flotte
`docs/supervision-conception.md` dit qu'un greffon Nagios **est** une sonde valide, « sans