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:
parent
4624f86bec
commit
b95a82251b
2 changed files with 54 additions and 13 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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é
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue