doc : pas de page « ce qui va te mentir » — les pieges ont trouve leur domicile

Trois des cinq pieges restants avaient deja une page depuis que la semaine a
avance : le connect() vers le vide (frontiere-opnsense.md + le controle porte
par frontiere-mesurer), le `make prouver` vert (wiki « Verifier le deploye »),
et le banner exchange. Les deux orphelins — kcadm -s sur une map, grafana-cli
dans une base fantome — s'adressent a qui ECRIT du code, pas a qui reprend
l'exploitation : ils n'ont rien a faire dans un chemin de reprise.

Une page separee aurait redit ce que trois autres disent deja, et aurait donc
vieilli mal — le reproche exact qu'on faisait a sa version longue.

La section ⑤ de « Reprendre l'ecosysteme » porte desormais la REGLE qui les
relie (verifier l'instrument avant d'accuser le composant) et un tableau de
trois lignes qui renvoie chacune a son domicile. Plus de promesse en attente.

Et le banner exchange n'avait AUCUN domicile : le savoir vivait dans un
commentaire du Makefile et trois entrees du CHANGELOG — nulle part ou on le
cherche, exactement le mal que la refonte traite. Ecrit en runbook §3, avec
ses trois causes par frequence et ce qui tranche dans l'ordre.

runbooks-exploitation.md declare aussi son lecteur, comme le veut la
convention validee.

Verifie : chaque renvoi controle un a un, prouver.py 0 (33 OK), plan-recette
inchange.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Daniel Allaire 2026-08-09 23:59:02 -04:00
parent 4624f86bec
commit b95a82251b
2 changed files with 54 additions and 13 deletions

View file

@ -1,8 +1,11 @@
# Runbooks d'exploitation — Set-OPS # Runbooks d'exploitation — Set-OPS
Procédures courtes et concrètes pour les situations d'exploitation. Complète les *docs/* de > **Pour qui :** l'exploitant, face à une situation. Pas le mainteneur, pas l'apprenant.
conception (le *pourquoi*) par le *comment faire*. Le wiki de formation en donne la version > Le *pourquoi* vit dans les autres `docs/` ; la version pédagogique, dans le wiki. Ici,
pédagogique. > uniquement le *comment faire*.
>
> Tu viens de reprendre l'écosystème et tu ne sais pas par où entrer ?
> Wiki → **Reprendre l'écosystème**.
--- ---
@ -52,7 +55,42 @@ qu'un utilisateur explicite. Voir l'unité wiki *Autorisation & RBAC*.
--- ---
## 3. Brander une instance Forgejo (identité visuelle) ## 3. « Connection timed out during banner exchange » — le message qui accuse le réseau
**Symptôme** : Ansible marque un ou plusieurs hôtes injoignables, avec ce message. On soupçonne
le réseau, la route ou le pare-feu. **C'est presque toujours autre chose.**
**Pourquoi le message trompe.** À travers la frontière, la poignée TCP aboutit *toujours* — le
pare-feu y répond lui-même sans relayer (voir `frontiere-opnsense.md`). L'échec ne peut donc
pas se présenter comme un « connection refused » franc : il se manifeste plus tard, au moment
où le serveur devrait annoncer sa bannière SSH. D'où un message qui parle de délai réseau pour
un hôte qui, souvent, n'a jamais rien reçu.
**Les trois causes, par fréquence :**
1. **La VM n'est pas encore là.** `make creer-vm` rend la main dès que Proxmox a *démarré* la
VM, pas quand elle répond. C'est le cas normal, quotidien, et aucun correctif ne l'abolira :
les attentes actives du `Makefile` existent pour ça.
2. **`sshd` refuse une rafale.** `MaxStartups` / `MaxSessions` trop serrés coupent des
connexions parfaitement légitimes — deux déploiements interrompus le 2026-08-09, sur des
hôtes qui n'avaient ni redémarré ni perdu leur réseau. Réglés par
`ssh_hardening_max_startups` (`10:30:60`) et `ssh_hardening_max_sessions` (`10`), avec
l'arbitrage expliqué dans `roles/ssh_hardening/defaults/main.yml`.
3. **Le réseau, vraiment** — le cas le plus rare, et le dernier à examiner.
**Ce qui tranche, dans l'ordre :**
```
make hote-afficher HOTE=<nom> # l'hôte existe-t-il au plan ?
ssh -v ansible@<ip> 2>&1 | tail -20 # où la négociation s'arrête exactement
```
Une bannière (`SSH-2.0-OpenSSH…`) prouve que le chemin est bon et que le problème est
applicatif. **Aucun `connect()` ne prouvera quoi que ce soit ici** — il réussit vers le vide.
---
## 4. Brander une instance Forgejo (identité visuelle)
Activer dans l'inventaire (group_vars `serveur_forgejo`) : Activer dans l'inventaire (group_vars `serveur_forgejo`) :
```yaml ```yaml

View file

@ -107,18 +107,21 @@ Deux réflexes qui évitent la moitié des fausses pistes :
## ⑤ Ce qui va te mentir ## ⑤ Ce qui va te mentir
Un écosystème ne tombe pas en panne franchement : il te donne d'abord un signal faux. Un Un écosystème ne tombe pas en panne franchement : il te donne d'abord un **signal faux**. Et
`connect()` TCP qui réussit vers le vide, une commande qui affiche *« changed ✔ »* sans avoir un signal faux coûte une demi-journée à qui n'est pas prévenu.
rien écrit, un tableau de bord vert au-dessus d'une autorité expirée.
Chacun coûte une demi-journée à qui le rencontre sans être prévenu. Le catalogue — chaque **La règle qui les couvre tous : quand une mesure accuse un composant, vérifie d'abord que ton
symptôme trompeur avec le contrôle qui tranche — fait l'objet de la page suivante, instrument mesure ce que tu crois.** Une sonde porte toujours un **contrôle** — une cible dont
**« Ce qui va te mentir »**, en cours d'écriture.
En attendant, la règle générale : **quand une mesure accuse un composant, vérifie d'abord que
ton instrument mesure ce que tu crois.** Une sonde porte toujours un contrôle — une cible dont
tu connais déjà la réponse. Si le contrôle ment, ne conclus rien. tu connais déjà la réponse. Si le contrôle ment, ne conclus rien.
Les trois que tu rencontreras, et où chacun est traité :
| Le signal | Ce qu'il te fera croire | Où c'est expliqué |
|---|---|---|
| un `connect()` TCP qui réussit **vers le vide** | que le port est ouvert | `docs/frontiere-opnsense.md` — la frontière répond à la poignée sans jamais relayer. Le contrôle : sonder `172.31.99.99`, et n'accepter que la **livraison**. C'est ce que fait `make frontiere-mesurer`. |
| `make prouver` **tout vert** | que le système va bien | [Vérifier le déployé](Vérifier-le-déployé) — les preuves lisent le dépôt, jamais les machines. |
| `Connection timed out during banner exchange` | que le réseau est en cause | `docs/runbooks-exploitation.md` **§3** — c'est le plus souvent une VM pas encore là, ou `sshd` qui refuse une rafale. |
--- ---
## Ce que tu dois changer en priorité ## Ce que tu dois changer en priorité