Set-OPS-Public/scripts
Daniel Allaire f01f06df5e catalogue : la carte des services avait quatre mois de retard sur le moteur
`catalogue-services.md` est le document qu'on lit pour savoir ce que Set-OPS FAIT :
l'hebergeur d'un second site, un futur client, un mainteneur qui arrive. Verifie role par
role contre roles/, voici ce qu'il disait de faux.

- « Capacites futures encore a implementer : collaboration (Nextcloud/Collabora) et couche
  web (frontal/dorsal) » — les quatre roles existent, collab-01, web-frontal-01 et
  web-dorsal-01 sont ACTIFS, et les deux roles web sont codifies depuis les spikes du
  2026-07-05.
- « La federation LDAP n'est pas automatisee dans le role ; Keycloak n'est pas expose » —
  serveur_keycloak/tasks/federation-ldap.yml existe, et le plan declare
  `expose: auth.<domaine>`.
- `infra-mail-01` : « Sendmail MTA » — c'est Dovecot ; Sendmail est retire depuis le
  2026-07-04. La table des hotes datait d'avant la separation edge-mta / mailstore.
- `client_supervision` annonce comme integration — n'a JAMAIS eu ni role ni playbook. La
  supervision ne pose rien sur les hotes : controles actifs depuis le coeur, resultats
  passifs pousses par l'API (c'est backup-01 qui rapporte l'etat de ses depots).
- Une colonne « Role » decorative inventait des noms (`nextcloud`, `client_metriques`) : le
  role porte le nom du GROUPE. Colonne retiree.

Et NEUF roles vivants ne figuraient dans aucune table — le socle, toute la pile courriel,
les sauvegardes, Icinga Web 2, oauth2-proxy, Unbound. Deux (`serveur_backup`,
`client_backup`) n'etaient nommes NULLE PART.

P38 — CE QUE P31 NE POUVAIT PAS VOIR. P31 verifie que tout est nomme et atteignable, pas
qu'un document dise vrai : une carte peut etre complete et perimee. P38 confronte le
catalogue au code dans les deux sens, et c'est la TABLE qui fait foi des deux cotes : tout
role figure dans une ligne de table (la prose ne suffit pas — la pile courriel y etait
racontee et introuvable pour qui lit un index), et tout groupe cite en table existe
reellement (role, ou playbook de groupe pour `serveur_durci`, qui en compose onze).

Deux exemptions nommees : la prose peut citer les roles RETIRES, sinon on ne peut plus
ecrire d'ou l'on vient ; et P38 ne juge pas si une description est JUSTE — cela se revoit
contre le CHANGELOG, le mecaniser serait se mentir.

EPROUVEE EN NEGATIF : rejouee contre la version d'avant, elle echoue en nommant les neuf
roles absents et les trois cases fantomes.

Le catalogue dit aussi desormais ou il s'arrete : la reconstruction prouve qu'une machine
nue atteint l'etat voulu, pas la tenue sous charge ; et l'usage reel de Nextcloud n'est pas
consigne comme preuve. Lacune nommee au passage : la dependance causale
serveur_web_frontal -> serveur_nginx n'est toujours pas declaree.

make prouver : 38 OK, 0 echec, 0 saute. make test inchange.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 11:07:59 -04:00
..
tests underlay : les tenants declares sont confrontes aux dossiers reels 2026-08-18 16:55:49 -04:00
applications.py P03 : la preuve comparait chaque instance a l'inventaire d'UNE SEULE 2026-08-18 14:35:01 -04:00
appliquer_opnsense.py P03 : la preuve comparait chaque instance a l'inventaire d'UNE SEULE 2026-08-18 14:35:01 -04:00
appliquer_proxmox_fw.py P03 : la preuve comparait chaque instance a l'inventaire d'UNE SEULE 2026-08-18 14:35:01 -04:00
appliquer_sdn.py P03 : la preuve comparait chaque instance a l'inventaire d'UNE SEULE 2026-08-18 14:35:01 -04:00
bases_donnees.py Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00
config_proxmox.py P03 : la preuve comparait chaque instance a l'inventaire d'UNE SEULE 2026-08-18 14:35:01 -04:00
couverture_gui.py Trois preuves qui regardent au-dela d'une seule instance + champ liens/websocket au GUI 2026-07-22 21:32:42 -04:00
devis_certificats.py devis des certificats : disque contre memoire, et l'AC etait expiree 2026-08-08 07:20:56 -04:00
devis_courriel.py courriel : routage local par identifiant, et la livraison interne remise en marche 2026-08-08 09:42:45 -04:00
devis_expositions.py devis des expositions : une vraie requete, depuis deux points de vue 2026-08-08 07:33:49 -04:00
devis_frontiere.py frontiere : etanche — CONFORME sur 56 lignes, dans les deux sens 2026-08-09 21:33:04 -04:00
devis_identite.py devis d'identite : comparer le deploye au declare 2026-08-08 06:55:06 -04:00
devis_mtu.py mtu : le 1450 de la zone n'atteignait pas les invites 2026-08-10 17:54:03 -04:00
devis_opnsense.py portee : les trois devis d'un site partagent enfin la meme regle 2026-08-18 16:38:30 -04:00
devis_placement.py placement : un devis confronte les QUATRE objets au cluster — dont le gabarit 2026-08-13 10:11:25 -04:00
devis_postgresql.py devis PostgreSQL et courriel : la serie des devis de service est complete 2026-08-08 08:53:49 -04:00
devis_proxmox_fw.py flux : admin devient un pair, et make ca-racine livre la racine 2026-08-07 17:26:35 -04:00
devis_proxmox_pools.py proxmox : pools créés, jeton normalisé, reliquat de voûte supprimé 2026-08-03 15:52:44 -04:00
devis_reseau.py portee : les trois devis d'un site partagent enfin la meme regle 2026-08-18 16:38:30 -04:00
devis_sdn.py portee : les trois devis d'un site partagent enfin la meme regle 2026-08-18 16:38:30 -04:00
devis_versions.py devis : make versions-mesurer — l'ecart avec l'amont devient lisible 2026-08-10 23:02:16 -04:00
domaines.py Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -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 adressage : l'index est borne [0-255] — 10.300.0.0/16 n'est pas un reseau 2026-08-12 16:21:33 -04:00
instancier.py P03 : la preuve comparait chaque instance a l'inventaire d'UNE SEULE 2026-08-18 14:35:01 -04:00
inventory_gui.py correction : 94 lignes de commentaire perdues, pas 121 2026-08-18 15:06:03 -04:00
inventory_host.py gabarit : deriver le domaine de recherche, et vider resolv.conf a la capture 2026-08-09 10:25:03 -04:00
inventory_rules.py P03 : la preuve comparait chaque instance a l'inventaire d'UNE SEULE 2026-08-18 14:35:01 -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 Mise en conformité prouvable : registre d'affirmations + make prouver 2026-07-20 19:53:18 -04:00
plan_recette.py Plan de recette (P22) : le pendant manuel de make prouver 2026-07-23 15:49:16 -04:00
prouver.py catalogue : la carte des services avait quatre mois de retard sur le moteur 2026-08-19 11:07:59 -04:00
proxmox_api.py proxmox-fw : un applicateur, et un refus assume 2026-08-06 19:39:33 -04:00
raser.py raser : lire le RESULTAT de la destruction, pas son accuse de reception 2026-08-10 22:47:28 -04:00
resoudre_flux.py portabilite : le repli nftables survivait a la bascule et annulait tout 2026-08-10 12:24:41 -04:00
serveurs.py P03 : la preuve comparait chaque instance a l'inventaire d'UNE SEULE 2026-08-18 14:35:01 -04:00
socle_amorcage.py D-71 : PKI et DNS debout avant tout, et la zone inverse manquait 2026-08-08 15:29:57 -04:00
sonde_tcp.py frontiere : etanche — CONFORME sur 56 lignes, dans les deux sens 2026-08-09 21:33:04 -04:00
underlay.py underlay : les tenants declares sont confrontes aux dossiers reels 2026-08-18 16:55:49 -04:00
verifier_gui.py Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00
verifier_intrants.py P32 / D-72 : tout intrant exige par un role est fourni par l'instance 2026-08-09 09:40:25 -04:00
verifier_ports.py P33 / D-73 : aucune collision de port entre roles co-localises 2026-08-09 09:46:17 -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 amorcage_acces : le role qui cree UN acces puis se retire 2026-08-07 13:42:27 -04:00