From d3437a630865f2073a15f4a2c243678e0a81feb4 Mon Sep 17 00:00:00 2001 From: Daniel Allaire Date: Wed, 30 Sep 2026 02:16:27 -0400 Subject: [PATCH] journal : etat de Technolibre remis en place sans reconstruire La reconstruction ne reinjecte aucun instantane : annuaire, Keycloak, Nextcloud et courriel remis depuis restic-tech (23:50) sur les machines existantes. Le runbook coupe aussi la section sur DROP DATABASE. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 38 +++++++++++++++++++++++++++++++++++ docs/runbooks-exploitation.md | 5 +++-- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd8a637..2c9e8e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,43 @@ # CHANGELOG — Set-OPS +## 2026-09-30 (46) — Technolibre : l'état d'avant la reconstruction remis en place, sans reconstruire + +**Le constat** : après (45), le mot de passe de `sysadmin` était revenu à celui de l'amorçage. +La reconstruction n'avait rien restauré — **aucune étape de Set-OPS ne réinjecte les +instantanés**. « Restauration vérifiée » (`make valider`) veut dire : restaurée dans un +répertoire temporaire et lue, pas remise en service. Chezlepro est dans le même cas (racine d'AC +et annuaire nés le 2026-09-13). + +**Perdu, mesuré contre l'instantané de 23:50** (`restic-tech`) : `sysadmin` (changé le +2026-09-16), racine et intermédiaire de l'AC (nouvelle empreinte), bases Keycloak et Nextcloud, +fichiers Nextcloud (197 → 108), une boîte aux lettres. + +**Remis en place, sur les machines existantes** (l'état neuf mis de côté avant chaque geste, +dans `/root/avant-restauration-2026-09-30` de chaque nœud) : +- **annuaire** (`idm-01`) : `slapadd -u` à blanc, puis base remplacée ; empreinte du mot de + passe = celle d'avant, sans changement forcé. `amorcage_acces` ne touche qu'un compte absent : + il ne le réécrasera pas ; +- **Keycloak** (`data-sql-01`) : section `keycloak` du `pg_dumpall` rejouée dans une base vide, + Keycloak arrêté ; sonde `identite` verte (fédération LDAP authentifiée) ; +- **Nextcloud** (`collab-01` + `data-sql-01`) : base, `data/` et `config/` ensemble (les secrets + d'instance voyagent avec les données), cache Redis purgé, `occ upgrade` (richdocuments) ; +- **courriel** (`infra-mail-01`) : `/var/vmail`. + +**Le piège du runbook s'est présenté** : la section `nextcloud` se terminait par +`DROP DATABASE postgres;`. La découpe coupe désormais aussi sur `DROP DATABASE`, et la garde +« hors-périmètre » l'avait vu. + +**Non remis** : l'AC (aucune confiance extérieure ne s'y rattache — le poste ne fait confiance +à aucune des deux racines ; la remettre imposerait de réenrôler les 13 machines) ; `icingadb` +(historique de supervision) ; `forgejo` (base orpheline, plus de forge au plan). + +**Contrôle** : `make valider` depuis le runner de Technolibre, 0 échec ; sondes identité, +passerelle, vigie, collaboration, boîtes, tableaux vertes. + +**Reste à coder** : l'étape de réinjection dans la reconstruction elle-même, dans l'ordre AC → +confiance de la flotte → annuaire → bases → fichiers et courriel. Chezlepro n'est pas +reconstruite tant qu'elle n'existe pas. + ## 2026-09-30 (45) — Technolibre reconstruit depuis le runner du site, puis par son propre runner **La preuve visée** : la limite 2 du jalon de reconstruction autonome — un locataire refait diff --git a/docs/runbooks-exploitation.md b/docs/runbooks-exploitation.md index 80db9f5..7d602ff 100644 --- a/docs/runbooks-exploitation.md +++ b/docs/runbooks-exploitation.md @@ -143,10 +143,11 @@ la base badger de step-ca, qui avance à **chaque** émission de certificat. `pg_dumpall` écrit `CREATE DATABASE ` **avant** le `\connect` correspondant. Découper « du `\connect X` au `\connect` suivant » emporte donc un ordre qui vise une -**autre** base. Couper aussi sur `CREATE DATABASE`, et **vérifier avant de rejouer** : +**autre** base. Couper aussi sur `CREATE DATABASE` et sur `DROP DATABASE` (avec `--clean`, +la section de `nextcloud` finissait par `DROP DATABASE postgres;` — 2026-09-30), et **vérifier avant de rejouer** : ``` -awk '/^\\connect forgejo$/{f=1;next} f && (/^\\connect /||/^CREATE DATABASE /){exit} f' \ +awk '/^\\connect forgejo$/{f=1;next} f && (/^\\connect /||/^CREATE DATABASE /||/^DROP DATABASE /){exit} f' \ toutes-bases.sql > section.sql grep -qE '^(DROP|CREATE|ALTER) DATABASE|^\\connect' section.sql \