Set-OPS-Public/roles/serveur_cache_site
Daniel Allaire dc92f01fe4 frontiere : le devis voit le site — fabric, alias et regles
Un mot manquait au vocabulaire des flux. Le runner de SITE declarait son API Proxmox en
`externe`, qui se rend par !SETOPS_INTERNES — or les hyperviseurs SONT en RFC 1918 : la
regle les aurait exclus tout en ayant l'air d'ouvrir le flux. D'ou `fabric`.

Deux flux manquaient :
  - serveur_cache_site n'avait aucun egress : la chaine de caches se terminait sur un
    cache vide, et ca ne se serait vu qu'au premier apt update d'un ecosysteme neuf ;
  - serveur_ops_site n'avait que l'API : le shell des noeuds et l'API de la frontiere
    sont deux autres pouvoirs, declares a part.

Le devis ignorait les machines du site — dans aucun plan de tenant, donc invisibles a sa
boucle, zero regle rendue SANS RIEN SIGNALER. Il emet desormais SETOPS_SITE,
SETOPS_FABRIC, SETOPS_ADMIN_SITE et un alias par role, sur opt2 (arrivee reelle du
trafic) et lan pour le SSH, plus le NAT sortant du site.

Le socle s'applique au site : site_inventaire.py range ses machines dans serveur_debian.

Patient 0 ne declare plus serveur_ops_site ni serveur_cache_site : il est un tenant
comme les autres, c'est meme tout ce qu'il prouve. Inventaire regenere.

42 preuves vertes. Devis : 26 regles a creer, 5 a retirer.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 00:49:04 -04:00
..
defaults frontiere : appliquee, et la contrainte de nommage d'OPNsense consignee 2026-08-24 17:51:29 -04:00
meta frontiere : le devis voit le site — fabric, alias et regles 2026-08-25 00:49:04 -04:00
tasks frontiere : appliquee, et la contrainte de nommage d'OPNsense consignee 2026-08-24 17:51:29 -04:00
README.md frontiere : appliquee, et la contrainte de nommage d'OPNsense consignee 2026-08-24 17:51:29 -04:00

serveur_cache_site

Le cache d'artefacts du SITE : celui que les écosystèmes voisins prennent comme amont, pour que Debian ne soit téléchargé qu'une fois pour toute la fabric.

Le chaînage

VM du tenant  →  cache du tenant  →  cache du SITE  →  Debian

Chaque écosystème garde le sien — il reste maître de ses paquets et s'en émancipe d'un drapeau — mais il ne va plus chercher chez Debian.

Un cache unique où toutes les VM taperaient aurait demandé un flux de chaque machine de chaque tenant vers un hôte d'un autre tenant : N×M chemins à travers le default-deny. Avec le chaînage il n'y en a qu'un par écosystème, entre deux caches.

Et l'étanchéité y gagne : le cache du site ne voit que des requêtes agrégées, jamais quelle machine installe quoi.

Pourquoi deux rôles plutôt qu'un drapeau

Les flux se déclarent dans meta/flux.yml, qui est statique. Un rôle unique aurait dû déclarer l'ingress inter-tenant pour tous les caches — et le devis l'a montré :

+ TENANT_PATI29 -> CHEZ17_SERVEUR_ARTEFACTS     un maillage complet,
+ TENANT_TECH23 -> CHEZ17_SERVEUR_ARTEFACTS     chaque cache acceptant chaque autre

Avec la séparation, l'ingress n'existe qu'ici, et un seul cache est joignable.

Qui peut le déclarer

L'écosystème de l'hébergeur, celui qui exploite la fabric. Un tenant ordinaire qui le déclarerait s'offrirait à servir ses voisins sans y être invité.

C'est le même patron que serveur_ops_site : le runner de site prépare le terrain — VNets, routes, flux — pour que les plans des tenants tiennent. Aucun écosystème n'ouvre de porte chez un autre ; c'est le site qui autorise.

Ce qu'il vérifie

Qu'il ne se chaîne pas lui-même. Il est le bout de la chaîne : le laisser pointer sur un amont ferait tourner les paquets en rond entre deux caches, ou les ferait sortir du site sans que personne ne l'ait décidé.

Que le cache écoute vraiment. Le rôle n'installe rien : sa seule prise sur le réel est de vérifier que le service qu'il désigne existe. Sans ça, il attribuerait une responsabilité à un port que personne n'écoute.

Ce que ce rôle ne fait pas

Il n'installe ni ne configure apt-cacher-ng — c'est serveur_artefacts. Il attribue une responsabilité et la rend lisible dans le plan.