|
Some checks are pending
verifier / verifier (push) Waiting to run
Trente-huit preuves, des tests, un lint — et RIEN ne les executait sans qu'un humain tape `make`. Le meilleur atout du depot dependait de ne pas oublier. Il a desormais une CI (.forgejo/workflows/verifier.yml) et une cible qui la rejoue a l'identique : `make ci`. CE QUE LA CI A TROUVE AVANT D'EXISTER. Ecrire le workflow supposait de repondre a une question jamais posee : est-ce qu'un depot PUBLIC, seul, se tient ? Mesure sur un clone nu : non, a cinq endroits. - `make instancier` echouait sur le modele public — le tout premier geste du QUICKSTART. Le Makefile forcait `principal/hosts.yml` alors que le modele vit en `production/` ; sa precedence suit desormais celle du code (fichier, puis REPERTOIRE existant, puis defaut). - P32 parcourait les 54 roles sans regarder ce que l'instance deploie. Elle passait sur l'ecosysteme de reference PARCE QU'IL PORTE TOUT. Or les modeles sont des OFFRES : toute offre plus petite que l'ecosysteme complet echouait son propre harnais, pour des services qu'elle ne vend pas. Le perimetre se lit maintenant du plan (groupes de l'inventaire, puis roles composes par leur playbook). - P24 : le modele public ne declarait aucun reseau d'administration — une flotte qu'on construit et ou l'on n'entre plus. `nftables_admin_ssh` est pose, avec le pourquoi. - P33 : verifier_ports.py codait `instance/inventories/principal/hosts.yml` en dur. - P32 et P24 lisaient le symlink `instance/` au lieu de SETOPS_INSTANCE. Toutes de la MEME FAMILLE que P03 avant-hier : une resolution d'inventaire recopiee, une variable d'environnement qui deborde de sa portee. Le depot en compte SEPT ; deux de plus sont corrigees ici, et la septieme le dit en commentaire plutot que de le taire. `make ci` NE TOUCHE AUCUN SYMLINK : le modele public est monte comme instance jetable, vise par SETOPS_INSTANCE/SETOPS_UNDERLAY, detruit en sortant. Deux details mesures parce que devines faux d'abord : l'instance jetable est un DOSSIER FRERE (la federation se decouvre ainsi ; ailleurs, quatre preuves tombent) ; et SETOPS_UNDERLAY n'est pose QUE pour la verification, sinon l'inventaire est ecrit avec une fabric et regenere avec une autre — la commande fabriquait l'ecart qu'elle denonce. RESULTAT : clone nu sans instance ni frere -> 38 OK, 0 echec, 0 saute. Depot de l'exploitant avec ses 3 instances -> 38 OK, 0 echec, 0 saute. Aucun residu. Et le lint du depot a refuse mon propre fichier de CI avant qu'il ne tourne une seule fois (`on:` lu par YAML comme le booleen vrai). Le harnais mordait deja. A AJUSTER AU PREMIER PASSAGE, ecrit en tete du workflow : l'etiquette `runs-on` doit correspondre a un runner Forgejo enregistre, et le runner a besoin du reseau pour pip et ansible-galaxy. Le vert de cette CI dira que le moteur et son modele public se tiennent — pas que la flotte va bien : aucune VM jointe, aucune voute. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| inventories/production/group_vars/all | ||
| plan | ||
| README.md | ||
| underlay.yml | ||
Modèle : socle
Infrastructure de base souveraine — 4 VM : edge (nginx), DNS (PowerDNS),
PKI (step-ca), magasin courriel (Dovecot). Le point de départ minimal, extensible
vers un écosystème complet (voir modèle integral).
Zones : Frontière (VLAN 16) · Services-infra (VLAN 19). VMID ip-miroir 9 chiffres.
Copier vers OPS-<tenant>, adapter index/domaine/intrants, puis make instancier.
Deux moitiés, deux propriétaires
Ce modèle en contient deux, qui ne vont pas au même endroit :
| Fichiers | Décrit | Copier vers |
|---|---|---|
plan/, inventories/ |
les services d'une organisation | OPS-<tenant> |
underlay.yml |
le matériel qui les porte | OPS-<hébergeur> |
Un tenant qui se fait héberger prend la première moitié seulement : l'underlay appartient à qui possède les commutateurs. Chez un hébergeur qui est aussi son propre tenant, les deux atterrissent dans le même dépôt — c'est un cas particulier, pas la règle.
L'underlay fourni est volontairement minimal : un seul commutateur, pas de fabric de stockage séparée. Tous les hébergeurs n'ont pas le même matériel ; les montages plus riches (étoile à trois commutateurs, paire en MLAG, stockage jumbo dédié) relèvent d'autres modèles.
Il est facultatif : un modèle sans underlay.yml reste valide. Présent, il est vérifié
pour sa cohérence interne par la preuve P17, sans être confronté aux tenants réels — un
modèle est un gabarit, pas un site déployé.