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 <noreply@anthropic.com>
This commit is contained in:
Daniel Allaire 2026-09-30 02:16:27 -04:00
parent 502feff6e0
commit d3437a6308
2 changed files with 41 additions and 2 deletions

View file

@ -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

View file

@ -143,10 +143,11 @@ la base badger de step-ca, qui avance à **chaque** émission de certificat.
`pg_dumpall` écrit `CREATE DATABASE <suivante>` **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 \