Set-OPS-Public/scripts
Daniel Allaire 43666cff6e site : un SITE a bien un plan — et huit defauts que lui seul pouvait reveler
J'ai repete toute la journee qu'un SITE n'est pas un plan. C'etait faux : j'en
reconstruisais un morceau par morceau dans underlay.yml sans le nommer. Ce qui est vrai,
c'est qu'un site ne DERIVE pas — il declare ses adresses parce qu'il EST le terrain — et
ne passe donc pas par `instancier`. Mais ne pas deriver n'est pas ne pas avoir de plan.

SITE-Chezlepro/plan/{10-intrants,serveurs,applications}.yml ; underlay.yml ne garde que
la fabric. Ce qui est MESURE d'un cote, ce qui est VOULU de l'autre. Les groupes viennent
du registre des applications, les gardes ont suivi le plan (4 controles negatifs).

Huit defauts, tous invisibles chez un tenant parce qu'il a toujours tout :
  - client_pki codait `infra-pki-01` EN DUR — vrai par coincidence de nomenclature ;
  - aucun moyen pour un service non-root de lire la cle (Forgejo tourne en `git`) ;
  - le certificat, PUBLIC par nature, restait en 0600 ;
  - l'unite Forgejo n'avait pas d'ExecReload : un cert renouvele aurait ete servi perime ;
  - le role ne savait pas servir TLS lui-meme (il y avait toujours un edge) ;
  - le cert ne couvrait pas le nom de SERVICE, faute d'`expose:` ;
  - les registres se chargeaient en tout-ou-rien : sans domaines.yml, plancher vide ;
  - le flux declarait 3000 en dur.

Le message accusait presque toujours autre chose : le DNS quand c'etait un nom faux, une
permission de fichier quand c'etait un port privilegie, rien du tout quand le plancher
s'ecrivait vide.

ROOT_URL est gravee dans les URL de clonage : la forge sert desormais sur 443, avec
CAP_NET_BIND_SERVICE, et son URL n'a plus de port.

Verifie depuis le reseau : Verify return code 0, https://forge.genese.internal/ -> 200.

42 preuves vertes, flux coherents (34 roles, 92 flux).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 13:15:34 -04:00
..
tests resolveur : un par tenant, et non plus un par machine 2026-08-24 16:59:34 -04:00
applications.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
appliquer_opnsense.py frontiere : un boitier injoignable etait lu comme un boitier vide 2026-08-23 00:56:30 -04:00
appliquer_proxmox_fw.py frontiere : lire ses reglages a la racine du depot de site 2026-08-23 00:47:32 -04:00
appliquer_sdn.py frontiere : lire ses reglages a la racine du depot de site 2026-08-23 00:47:32 -04:00
bases_donnees.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
config_proxmox.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
couverture_gui.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -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 site : un ecosysteme complet — PKI, DNS, forge, cache, runner 2026-08-25 12:00:17 -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 pare-feu est-ouest : applique, et le port derive enfin compris des deux cotes 2026-08-24 17:58:54 -04:00
devis_proxmox_pools.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -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 portee : les trois devis d'un site partagent enfin la meme regle 2026-08-18 16:38:30 -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
domaines.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
genome.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -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 site : un SITE n'est pas un plan — ses machines vivent dans l'underlay 2026-08-24 23:02:05 -04:00
inventory_gui.py frontiere : lire ses reglages a la racine du depot de site 2026-08-23 00:47:32 -04:00
inventory_host.py resolveur : un par tenant, et non plus un par machine 2026-08-24 16:59:34 -04:00
inventory_rules.py site : un SITE a bien un plan — et huit defauts que lui seul pouvait reveler 2026-08-25 13:15:34 -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 serveur_ops : la difference entre une archive et une matrice 2026-08-23 11:58:10 -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
resoudre_flux.py frontiere : le devis voit le site — fabric, alias et regles 2026-08-25 00:49:04 -04:00
serveurs.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
site_inventaire.py site : un SITE a bien un plan — et huit defauts que lui seul pouvait reveler 2026-08-25 13:15:34 -04:00
site_machines.py site : un SITE a bien un plan — et huit defauts que lui seul pouvait reveler 2026-08-25 13:15:34 -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
underlay.py site : un SITE a bien un plan — et huit defauts que lui seul pouvait reveler 2026-08-25 13:15:34 -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 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 collabora : en natif, la derniere exception conteneurisee tombe 2026-08-24 16:23:35 -04:00