runbook : reprise.md autoportante, les trois trous du rejeu tiers (#44) #230
No reviewers
Labels
No labels
Compat/Breaking
EC01
EC02
EC03
EC04
EC05
EC06
Kind/BDD
Kind/Back
Kind/Bug
Kind/CICD
Kind/Cloud
Kind/Contenu
Kind/Data
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Front
Kind/IA
Kind/Infra
Kind/Monitoring
Kind/Security
Kind/Testing
Portée/Post-jury
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
ops/alerte
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
g2/enervision!230
Loading…
Reference in a new issue
No description provided.
Delete branch "gabriel/44-reprise-autoportante"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Comble les trois trous relevés par le rejeu à blanc de
reprise.mdmené par Marvin le 09/09, sans son auteur (relevé complet :docs/runbooks/reprise-rejeu-2026-09-09-marvin.md). C'est la boucle que l'exigence ENF-16 attend : un tiers rejoue, ce qui le bloque est le livrable, et ce qui le bloque est comblé.Ce que ça change
Ubuntu 24.04exact (assertion de tête desite.yml) ; renvoi àdeploiement.md§ Prérequis et § Amorçage d'une cible neuve.hosts.iniest ignoré par Git : absent d'un poste neuf, il fallait le dire.bootstrap.yml) ;--check --diffrétabli, quesite.ymlimpose et que le manuel sautait ; la séquence en deux passes que « bases créées vides » masquait — orrestore.ymlrestaure la basemlflowà l'étape 3.mesure_horaire(etl.md) puis les troiscurl(application.md). La base avant l'API — une API qui répond sur une base vide ne prouve rien.Au passage,
deploiement.md: la « restauration chronométrée du #41 » est resserrée sur ce qu'elle prouve réellement, l'exercice manuel en conteneurs du 2 septembre (#92), pasrestore.yml.reprise.mdportait déjà la distinction en tête,deploiement.mdne la portait pas.Lénaïc, deux points pour ta relecture
deploiement.md, plus deux commandes déjà publiées et vérifiées ailleurs dansdocs/runbooks/. Aucune commande nouvelle n'est inventée — le README l'interdit, et je n'ai pas de cible pour en vérifier une. Ton approbation est ce qui rend le geste à son auteur ; si une formulation ne te convient pas, c'est la tienne qui gagne.Ferme la partie « autoportance » du rejeu du 09/09. Ne ferme pas le #41 : le rejeu réel et chronométré de
restore.ymlreste dû.Relu en vérifiant chaque affirmation plutôt qu'en te croyant. Les cinq tiennent.
site.ymlrefuse toute version autre qu'Ubuntu 24.04site.yml:24,ansible_distribution_version == "24.04"hosts.iniest ignoré par Git.gitignore:35, et l'inventaire ne porte quehosts.ini.examplesite.ymlimpose--check --diffd'abordsite.yml:8etdeploiement.md:259restore.ymlrestaure la basemlflowrestore.yml:23, elle est dans la listemlflow.envvient degenere-identifiants.sh, le coffre l'ignoreroles/app/tasks/main.yml:289et:490Et les deux commandes ajoutées sont bien déjà publiées ailleurs : la requête
mesure_horaireest àetl.md:350, les troiscurlàapplication.md:156-158. Aucune commande inventée, ta déclaration est exacte.Sur ton point 1
Approuvé, et sur la base que tu poses toi-même. Ce sont des renvois vers des sections existantes et des commandes déjà vérifiées ailleurs. Le CA2 est respecté dans son intention : personne n'a inventé un geste qu'il n'a pas tenu.
Sur ton point 2
Bien vu de ne pas écrire au journal des rejeux au nom de quelqu'un qui n'a pas joué. C'est exactement la règle, et elle est plus facile à enfreindre qu'à tenir quand on veut fermer un ticket.
Un point, et il porte sur le seul geste qui compte vraiment
--check --diffmarqué « obligatoire d'abord » à l'étape 2 vient d'un garde-fou écrit pour une autre situation. Dansdeploiement.md, il protège d'unsite.ymljoué sur le serveur de travail qui écraserait l'état courant. C'est juste là-bas.Sur une cible NEUVE, il n'y a rien à écraser, et
--checksur une machine vierge échoue en cascade : une tâche interroge ce qu'une tâche précédente, non jouée en mode simulation, aurait dû créer. Le mode simulation d'Ansible n'a pas d'état intermédiaire.Ni toi ni moi ne pouvons trancher : le groupe
neufest encore commenté, aucune cible vierge n'a jamais été déclarée. Mais le risque n'est pas symétrique — si ça casse, ça casse à l'étape 2 d'une procédure de reprise, c'est-à-dire à trois heures du matin avec la production à terre. C'est le pire endroit pour découvrir qu'une consigne ne s'applique pas.Je ne bloque pas là-dessus. Une phrase suffit, et je te la propose plutôt que de la pousser sur ta branche :
Si tu préfères la formuler autrement, c'est la tienne qui gagne. Si tu préfères la laisser telle quelle et l'éprouver le jour du rejeu, dis-le et j'approuve quand même — c'est écrit ici, ça suffit à la tracer.
Bon pour moi.