voute du site : vault_pg_exportateur, et la chaine est complete
Le gabarit de voute reclamait cette cle pour serveur_postgresql ; la voute reelle du site ne l avait pas. Le gabarit disait quoi mettre, personne ne l avait mis. 40 caracteres alphanumeriques : le mot de passe entre dans une URI de connexion PostgreSQL, et un @ ou un / y couperait l URI en deux — l echec dirait mauvais mot de passe au lieu d URI mal formee. Gardes passees : copie de surete, dechiffrement vers un FICHIER jamais vers un tube, relecture du YAML, en-tete verifie apres, empreinte comparee, 15 cles relues, clair passe au shred. Le premier rechiffrement produisait du 1.2 etiquete la ou la voute portait du 1.1 — refait sans etiquette, parce que le runner du site ouvre avec un unique fichier-cle. Compte setops_metriques : ni superuser, ni createdb, ni createrole, membre de pg_monitor et rien d autre. Les huit panneaux des deux tableaux derives repondent, mesures sur le site. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
This commit is contained in:
parent
b02d3c900e
commit
bb88f1f981
2 changed files with 59 additions and 1 deletions
58
CHANGELOG.md
58
CHANGELOG.md
|
|
@ -1,5 +1,63 @@
|
|||
# CHANGELOG — Set-OPS
|
||||
|
||||
## 2026-09-14 (16) — Le dernier maillon : l'exportateur PostgreSQL, et huit panneaux qui repondent
|
||||
|
||||
L'entree precedente laissait le tableau de PostgreSQL assemble, charge, et **vide** :
|
||||
`serveur_postgresql` saute son exportateur tant que `vault_pg_exportateur` n'est pas dans
|
||||
la voute. Il y est maintenant, et la chaine est complete de bout en bout.
|
||||
|
||||
### Le secret, pose avec ses gardes
|
||||
|
||||
`vault_pg_exportateur` etait deja au **gabarit** de voute — `scripts/voute.py lister` le
|
||||
reclamait pour `serveur_postgresql`. Il manquait a la voute REELLE du site. Le gabarit
|
||||
disait quoi mettre, personne ne l'avait mis : c'est exactement ce que ce gabarit existe
|
||||
pour attraper, et il l'a attrape.
|
||||
|
||||
Quarante caracteres **alphanumeriques**, et ce n'est pas de la pruderie : ce mot de passe
|
||||
entre dans une URI de connexion PostgreSQL (`DATA_SOURCE_NAME`). Un « @ », un « : » ou un
|
||||
« / » y couperait l'URI en deux, et l'echec dirait « mauvais mot de passe » au lieu de
|
||||
« URI mal formee ».
|
||||
|
||||
LES GARDES, toutes passees : copie de surete avant toute ecriture ; dechiffrement vers un
|
||||
FICHIER et jamais vers un tube — `ansible-vault` ecrit sur stderr, et un tube ferme le fait
|
||||
echouer en silence ; relecture du YAML avant de rechiffrer ; en-tete `$ANSIBLE_VAULT`
|
||||
verifie apres ; empreinte comparee ; les quinze cles relues une a une ; copies en clair
|
||||
passees au `shred`, pas au `rm`.
|
||||
|
||||
UN DETOUR, CORRIGE AVANT DE NUIRE. Le premier rechiffrement, fait sous
|
||||
`--encrypt-vault-id`, a produit du **format 1.2 avec une etiquette** la ou la voute portait
|
||||
du 1.1 sans etiquette. Le runner du site ouvre cette voute avec un unique fichier-cle : une
|
||||
etiquette qu'il ne connait pas etait un risque pour rien. Rechiffree en 1.1, comme avant.
|
||||
|
||||
### Le compte, et ce qu'il peut
|
||||
|
||||
setops_metriques superuser=f createdb=f createrole=f membre de : pg_monitor
|
||||
|
||||
`pg_monitor` donne les vues de statistiques et **elles seules** — aucune donnee
|
||||
applicative. Faire tourner un exportateur en `postgres` serait donner les cles de la base
|
||||
pour lire des compteurs.
|
||||
|
||||
### Les huit panneaux, mesures
|
||||
|
||||
| tableau | panneau | ce que Prometheus rend |
|
||||
|---|---|---|
|
||||
| client_metrique | Memoire disponible | 10 series, 20 % a 87 % |
|
||||
| | Espace libre (le plus serre) | 10 series, 28 Go a 401 Go |
|
||||
| | Charge par coeur | 10 series |
|
||||
| | Trafic reseau entrant | 10 series, 65 o/s a 5,4 Mo/s |
|
||||
| serveur_postgresql | Connexions utilisees | 1 serie |
|
||||
| | Taux de succes du cache | 1 serie |
|
||||
| | Taille des bases | 4 series, 7,5 a 10,9 Mo |
|
||||
| | Transactions par seconde | 1 serie |
|
||||
|
||||
DEUX PANNEAUX ONT MIS DEUX MINUTES A REPONDRE, et il fallait savoir pourquoi avant de
|
||||
conclure. Les deux emploient `rate(...[5m])` : un taux exige au moins deux echantillons
|
||||
dans la fenetre, et l'exportateur venait de naitre. La verification n'a pas attendu en
|
||||
esperant — elle est allee lire les metriques BRUTES chez l'exportateur (4 series chacune)
|
||||
puis dans Prometheus (4 series chacune) : les noms etaient bons, seul le temps manquait.
|
||||
Un panneau vide parce qu'une metrique n'existe pas et un panneau vide parce qu'il est trop
|
||||
tot se ressemblent parfaitement, et n'appellent pas le meme geste.
|
||||
|
||||
## 2026-09-14 (15) — Le generateur de tableaux : les panneaux declares deviennent des tableaux
|
||||
|
||||
Les roles declaraient leurs panneaux dans `meta/metriques.yml`, Prometheus en derivait deja
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@
|
|||
| P57 | Comptes en prose : les chiffres du depot sur lui-meme | — | ✅ OK | Les comptes ecrits en prose correspondent a la mesure (77 preuves, 68 roles, 41 groupes). |
|
||||
| P58 | Habilitations : chaque service dit a quel GROUPE, et par quoi | — | ✅ OK | 8 habilitation(s) declarees, toutes nommant un groupe, un mecanisme connu et une raison ; les `role-realm` sont projetees. |
|
||||
| P59 | Enumerations annoncees : le nombre correspond a ce qui suit | — | ✅ OK | 2 enumeration(s) annoncee(s) correspondent a ce qu'elles annoncent (formes non ambigues seulement). |
|
||||
| P60 | Wiki publie : la forge sert ce que le depot dit | AFF-002 | ✅ OK | Le wiki publie correspond au depot : `wiki/` n'a pas bouge depuis `311f33d` (publie le 2026-09-14). |
|
||||
| P60 | Wiki publie : la forge sert ce que le depot dit | AFF-002 | ✅ OK | Le wiki publie correspond au depot : `wiki/` n'a pas bouge depuis `392da4d` (publie le 2026-09-14). |
|
||||
| P61 | Schema du plan : il decrit tout ce que les plans contiennent | AFF-033 | ✅ OK | Le schema decrit 47 champ(s) sur 6 registres ; il couvre tout ce que les plans reels contiennent, et la FORME de chaque champ (scalaire / objet / table) corresp |
|
||||
| P62 | Schema du plan : il decrit tout ce que le MOTEUR accepte | AFF-033 | ✅ OK | Les 4 validateurs n'acceptent aucun champ que le schema ignore (applications:8, bases_donnees:4, domaines_publics:5, serveurs:3 champ(s) lus par validateur). |
|
||||
| P63 | cloud-init nait avec la VM et ne lui survit pas | — | ✅ OK | cloud-init est au gabarit (la premiere seconde), absent du socle (pas de va-et-vient), et retire par le durcissement — avec la garde qui verifie que le reseau s |
|
||||
|
|
|
|||
Loading…
Reference in a new issue