Set-OPS-Public/scripts
Daniel Allaire cd0f94a50b console : un tronc, deux branches — assembler deux fois est ce qui fait deriver
Il y avait deux assembleurs de charge, un par sorte de console. Ils ont derive deux fois le
meme jour : en forme (serveurs valait [] d'un cote et {} de l'autre, et charger() levait),
puis en contenu (cinq registres servis vides alors que le site a SON plan — 9 serveurs,
21 applications, 2 bases, 1 domaine, tous invisibles).

Console assemble, une seule fois, et fixe les clefs et leurs formes. Les branches ne
decident que de ce qui leur appartient : d'ou vient le plan, d'ou vient l'inventaire, quels
pouvoirs elles portent. ConsoleLocataire configure, ConsoleSite materialise et sert
desormais son propre plan, ConsolePoste herite du locataire et sait en plus sur quelle
fabric poser.

Le role et la portee ne se confondent pas : le role est une propriete de la classe, la
portee se calcule depuis les pouvoirs. Un poste prive de la voute du site reste l'atelier du
mainteneur et n'engendre pourtant rien. Le decoupage a montre un trou aussitot : ConsolePoste
heritait du refus d'un locataire — « elle ne sait pas sur quelle fabric poser » — alors qu'il
monte la carte ; ce qui lui manque est la voute, et accuser la mauvaise absence fait chercher
au mauvais endroit.

Le jugement des assistants remonte dans le tronc : il etait ecrit dans la route qui liste ET
dans celle qui execute, et celle qui se trompe est toujours celle qui execute.

Valide : make test a 0 echec, 8 tests de rendu sous node dont deux neufs, console lancee pour
de vrai (13 serveurs, 24 applications, 17 runbooks, 127 etapes, 0 ecart). make verifier a
aussi attrape une faute que j'avais laissee passer sur depots_perimes.yml — risky-shell-pipe,
corrige. P02 et P60 restent, et P60 demande une republication du wiki.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-20 21:55:49 -04:00
..
tests console : un tronc, deux branches — assembler deux fois est ce qui fait deriver 2026-09-20 21:55:49 -04:00
applications.py plan : l ecriture des registres devient atomique — tout, ou rien 2026-09-08 14:57:57 -04:00
appliquer_opnsense.py frontiere : publier un service du site, port public et redirection 2026-09-16 22:38:39 -04:00
appliquer_proxmox_fw.py flux : l interne refuse a voix haute, la bordure se tait (P53) 2026-08-28 16:43:22 -04:00
appliquer_sdn.py frontiere : lire ses reglages a la racine du depot de site 2026-08-23 00:47:32 -04:00
attendre_materialisation.py creer-vm : prouver la materialisation sans entrer chez le tenant 2026-08-27 22:48:49 -04:00
bases_donnees.py plan : l ecriture des registres devient atomique — tout, ou rien 2026-09-08 14:57:57 -04:00
cacher_paquets.py paquets tiers : passer par le cache du controleur, plus par Internet 2026-09-05 08:22:14 -04:00
config_proxmox.py plan : l ecriture des registres devient atomique — tout, ou rien 2026-09-08 14:57:57 -04:00
couverture_gui.py GUI : le formulaire des bases est GENERE depuis le schema 2026-09-08 15:30:08 -04:00
devis_certificats.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
devis_courriel.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
devis_expositions.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
devis_frontiere.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
devis_identite.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
devis_mtu.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
devis_opnsense.py acces d'administration : un tunnel par locataire, declare par lui, borne a lui 2026-09-17 16:01:54 -04:00
devis_placement.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
devis_postgresql.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
devis_proxmox_fw.py flux : l interne refuse a voix haute, la bordure se tait (P53) 2026-08-28 16:43:22 -04:00
devis_proxmox_pools.py pools : le genome ne nait plus chez un locataire 2026-09-13 04:12:27 -04:00
devis_reseau.py devis reseau : un segment non etiquete n'appartient a aucune fabric de switch 2026-08-25 09:51:57 -04:00
devis_sdn.py sdn : le puits avalait le plan d administration — une route, et le chemin existe 2026-08-28 17:46:40 -04:00
devis_underlay.py underlay : la frontiere entre les deux mondes, et l'instrument qui la mesure 2026-08-22 16:31:35 -04:00
devis_versions.py devis : make versions-mesurer — l'ecart avec l'amont devient lisible 2026-08-10 23:02:16 -04:00
dns_bascule.py zones publiques : le courriel dans la zone, et un devis avant de basculer 2026-09-16 21:54:49 -04:00
dnssec.py DNSSEC : le locataire signe, avec la cle de sa voute 2026-09-16 22:09:21 -04:00
domaines.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
exporter_cles.py pools nommes comme les depots, et les cles sortent du poste 2026-09-12 21:37:28 -04:00
expositions_etat.py expositions-etat : le certificat SERVI, pas celui du disque 2026-09-11 10:21:19 -04:00
fiche_role.py fiche : les panneaux etaient caches derriere l exportateur 2026-09-14 16:34:51 -04:00
forge_amorcer.py trois reconstructions : trouver, verifier, prouver — 37 min 24 au tour 3 2026-09-12 20:55:59 -04:00
gabarit_etat.py D-86 mis a l epreuve : Chezlepro rasee et refaite depuis zero 2026-09-10 13:06:45 -04:00
genome.py plan : l ecriture des registres devient atomique — tout, ou rien 2026-09-08 14:57:57 -04:00
genome_colis.py genome : la forge du SITE fait autorite (D-81), et make genome-etat le verifie 2026-08-26 09:17:24 -04:00
instance_creer.py Créer une instance depuis un modèle (CLI + GUI) 2026-07-23 14:13:36 -04:00
instances.py un site prend son propre index, et la garde les compte enfin 2026-09-12 14:31:51 -04:00
instancier.py console chez les locataires, collision de noms, et un fichier ecrase 2026-09-15 11:47:50 -04:00
inventory_gui.py console : un tronc, deux branches — assembler deux fois est ce qui fait deriver 2026-09-20 21:55:49 -04:00
inventory_host.py clonage : le plancher se perdait au troisieme maillon 2026-09-13 20:10:24 -04:00
inventory_rules.py acces d'administration : un tunnel par locataire, declare par lui, borne a lui 2026-09-17 16:01:54 -04:00
ma_forge.py le wiki suit le genome : un locataire n en est pas depositaire 2026-09-14 14:41:23 -04:00
materiel.py materiel : un catalogue de capteurs, un tableau Grafana, un verdict Icinga 2026-09-17 10:13:43 -04:00
model_creer.py gabarit : modeleChezlepro -> modeleSetOPS, et une porte pour l'hebergeur 2026-08-12 14:36:44 -04:00
modeles.py modèles : l'underlay devient modélisable, et P17 le valide 2026-08-02 17:11:18 -04:00
orchestrer.py DNS public en production : cinq fautes que seule la production montrait 2026-09-16 18:35:36 -04:00
plan_recette.py documentation : la tournee des 74 documents, parce qu un balayage ne lit pas 2026-09-06 16:18:23 -04:00
prouver.py la console mesure le pouvoir sur la voute, pas sur la carte 2026-09-20 20:12:18 -04:00
proxmox_api.py voutes : le monde physique a la sienne, les tenants n'en portent plus les cles 2026-08-22 17:13:48 -04:00
raser.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
remise.py remise au client : deux temps, un outil, une garde 2026-09-16 11:16:27 -04:00
resoudre_flux.py acces d'administration : un tunnel par locataire, declare par lui, borne a lui 2026-09-17 16:01:54 -04:00
restaurer_cles.py restauration : lire aussi l archive en clair, pas seulement la chiffree 2026-09-13 16:32:07 -04:00
routes_fabric_etat.py le site surveille enfin sa fabric 2026-09-10 18:50:43 -04:00
runbooks.py assistants : la portee se pese a l'etape, pas a la sequence 2026-09-20 19:55:02 -04:00
schema_plan.py acces d'administration : un tunnel par locataire, declare par lui, borne a lui 2026-09-17 16:01:54 -04:00
serveurs.py plan : l ecriture des registres devient atomique — tout, ou rien 2026-09-08 14:57:57 -04:00
site_intrants.py acces d'administration : un tunnel WireGuard nominatif, pas le runner en rebond 2026-09-17 14:42:48 -04:00
site_inventaire.py materiel : la frontiere expose ses temperatures, seul le Prometheus du site les lit 2026-09-17 10:20:46 -04:00
site_machines.py memoire : ce que l hote a le droit de reprendre, et pourquoi il ne le pouvait pas 2026-09-13 19:57:11 -04:00
site_raser.py le site prend l index 37, et la capacite de le raser existe enfin 2026-09-12 16:32:06 -04:00
socle_amorcage.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
sonde_tcp.py frontiere : etanche — CONFORME sur 56 lignes, dans les deux sens 2026-08-09 21:33:04 -04:00
sonder.py sonder : rapporter ce qui distingue, au lieu d un echec 2026-08-28 17:02:20 -04:00
underlay.py D-86 mis a l epreuve : Chezlepro rasee et refaite depuis zero 2026-09-10 13:06:45 -04:00
verifier_cle_amorcage.py insemination : le runner verifie SA cle avant de partir 2026-09-13 22:04:41 -04:00
verifier_genome_a_jour.py deployer-tout : le genome est-il a jour avant de poser quoi que ce soit 2026-09-13 23:32:16 -04:00
verifier_gui.py GUI : les six registres ont un formulaire genere, et la sauvegarde aussi 2026-09-08 18:26:33 -04:00
verifier_intrants.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
verifier_ports.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
verifier_signature.py forgejo : epingle 16.0.2, et le verificateur accepte la cle PRIMAIRE 2026-08-11 01:04:16 -04:00
voute.py DNSSEC : le locataire signe, avec la cle de sa voute 2026-09-16 22:09:21 -04:00
voutes.py voutes : une cle absente n est pas une faute — elle est souvent la bonne reponse 2026-08-28 18:41:21 -04:00
vpn_admin.py tunnel d'administration : TechnoLibre servi, et l'oeuf et la poule du premier pair 2026-09-17 16:08:39 -04:00