SITE-TechnoLibre/underlay.yml
Daniel Allaire 1fc0b44b6d site : toutes les valeurs decidables sont posees, restent les faits du materiel
Terrain vierge, factory settings : ce qui relevait d une DECISION a ete tranche.
Il reste treize valeurs, et ce sont des faits que seul le materiel peut dire.

Decisions :
- noeud `atelier`, frontiere `portail`, domaine du site `socle.internal` (distinct
  de technolibre.internal, qui appartient au locataire)
- pont unique vmbr0 VLAN-aware : sans seconde carte, d autres ponts ne separeraient
  rien
- gabarit 99998, le meme dans toute la flotte ; stockage local-lvm, le seul present
  sur un noeud unique
- rebond ansible@10.31.0.1, noeud 10.31.0.41

routage_tenants: sdn — et c est le point qui demandait un arbitrage. Sans
commutateur de niveau 3, le mode `switch` ferait porter les SVI a la frontiere :
six interfaces VLAN de locataire EN PLUS de ses six pattes de site, et les ACL
entre elles a verifier a la main. En EVPN, le routage et le filtrage inter-zone du
locataire vivent sur le noeud, la frontiere ne voit que le transit, et le moteur
sait deja poser tout ca. L objection « EVPN sur un seul noeud, c est un maillage
sans pair » se retourne : un VTEP unique n a aucune session a etablir.

CONSEQUENCE MESUREE AVANT LA VISITE, PAS PENDANT. En mode sdn, devis_opnsense
derive le prochain saut des routes de la frontiere depuis
proxmox_sdn.sortie_primaire — qui vit dans proxmox-hebergeur.yml, absent de ce
depot. La derivation rendait une chaine VIDE : le devis se tait au lieu d ecrire
faux, mais la frontiere restait sans route de retour vers le locataire. Le fichier
est cree ; la derivation rend maintenant 10.0.4.41.

ASN 65031 et controleur EVPN0031, derives de l index du site plutot que repris de
Chezlepro (65000) : les deux sites ont vocation a etre relies, et deux clusters qui
echangent des routes avec le meme numero d AS produisent une panne dont le message
ne parle pas d AS.

COLLECTE.md ne demande plus que ce qui se releve : le nom de la carte reseau, les
deux adresses de la frontiere, les neuf noms d interfaces optN. Plus un chiffre a
mesurer avant de materialiser — quinze clones complets font environ 600 Go sur
local-lvm.

Federation : 5 instances, aucun index en collision (13, 17, 23, 29, 31, 37).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-13 14:16:37 -04:00

129 lines
7.3 KiB
YAML

# Underlay de SITE-Technolibre — l'infrastructure PHYSIQUE de l'hébergeur.
#
# UN SEUL NŒUD PROXMOX, en version 9. C'est la différence de fond avec le site de
# Chezlepro : pas de Ceph, pas d'iSCSI, pas de migration, pas de fabric de stockage.
# Le gabarit et ses clones vivent sur la même machine — le SPOF est total, et assumé.
#
# Dérivé du modèle `exemples/modeles/socle` (« un seul commutateur, pas de fabric de
# stockage séparée — le point de départ honnête d'un petit hébergeur »), adapté.
#
# ⚠ TOUT CE QUI EST MARQUÉ <<…>> EST À RELEVER SUR PLACE. Voir COLLECTE.md.
---
underlay:
# Le locataire que ce site hébergera. Son index est déjà fédéré (23) et il ne
# change pas : c'est lui qui porte l'adressage d'OPS-Technolibre, ses VLAN et ses VMID.
# L'INDEX DU SITE LUI-MÊME. Déclaré ici, et pas seulement porté par les adresses :
# c'est ce qui le rend visible à la garde des collisions (`make instances`).
# Depuis le 2026-09-12, SITES et OPS partagent la classe A — deux écosystèmes ne
# peuvent donc plus prendre le même nombre, quel que soit leur genre.
index: 31
# Le locataire que ce site hébergera, avec SON index à lui.
tenants:
OPS-Technolibre: 23
# CE QUI ROUTE ENTRE LES ZONES D'UN LOCATAIRE — TRANCHÉ LE 2026-09-13.
#
# Deux modes existent :
# `switch` : un commutateur porte les SVI et les ACL (mode par défaut du moteur)
# `sdn` : EVPN sur le nœud, un VRF par locataire
#
# ICI IL N'Y A PAS DE COMMUTATEUR DE NIVEAU 3. Entre le nœud et l'OPNsense, il n'y a
# qu'un lien. En mode `switch`, le seul équipement capable de porter les SVI serait
# donc la frontière elle-même : il faudrait lui ajouter SIX interfaces VLAN de plus —
# celles du locataire — en plus de ses six pattes de site, et vérifier à la main les
# ACL entre elles. Douze interfaces sur une machine, pour un écosystème.
#
# En `sdn`, le routage ET le filtrage inter-zone du locataire vivent SUR LE NŒUD.
# Aucun VLAN de locataire ne circule sur le fil, la frontière ne voit que le transit,
# et le moteur sait déjà poser tout ça (`appliquer_sdn`). L'inter-locataire, lui,
# sort du VRF et passe par la frontière, qui le police.
#
# L'OBJECTION — « EVPN sur un seul nœud, c'est un maillage sans pair » — est réelle
# mais se retourne : un VTEP unique n'a AUCUNE session à établir, là où le mode
# `switch` demanderait de configurer et d'éprouver douze interfaces routées. La
# complexité qu'on croyait éviter était de l'autre côté.
#
# C'est aussi le mode qu'exerce Chezlepro : mêmes chemins de code, mêmes devis.
routage_tenants: sdn
# LA FRONTIÈRE ROUTE TOUT — il n'y a pas d'autre équipement de niveau 3 sur ce site.
# Le champ accepte « le commutateur, ou la frontière si elle route tout » : c'est le
# second cas.
routeur: portail
# Sans commutateur, le dialecte ne commande presque rien (le devis switch n'émet plus
# ni VLAN de locataire, ni SVI, ni ACL en mode `sdn`). On garde celui de la flotte,
# pour qu'un exploitant qui passe d'un site à l'autre lise la même forme.
dialecte: binardat
mtu_overlay: 1450
# UN SEUL LOCATAIRE, ET L'INTER-LOCATAIRE PASSE DÉJÀ PAR LA FRONTIÈRE. Rien à lier à
# une interface de routage qui n'existe pas. À revoir le jour où un deuxième
# écosystème s'installe ici — ce sera alors un geste, pas un effet de bord.
acl_inter_tenant: false
stp:
mode: rstp
topologie: etoile
reseaux:
# PLAN DE GESTION — la seule chose qui doit être unique entre deux sites.
# `10.<index>.0.0/24`, index 31 : celui du SITE, distinct de celui de son
# locataire (23). Décision du 2026-09-12 : SITES et OPS partagent la classe A,
# chacun avec son propre index — le plan d'administration de l'hébergeur ne vit
# plus dans le supernet d'un de ses locataires.
- nom: management
description: Gestion du nœud, OOB/IPMI, poste de l'exploitant
vlan: null
sous_reseau: 10.31.0.0/24
mtu: 1500
# LIEN VERS LA FRONTIÈRE. Sans lui, la flotte n'a ni sortie ni chemin de retour :
# elle serait routée jusqu'à la bordure puis muette — très difficile à diagnostiquer.
- nom: transit-frontiere
description: Lien nœud Proxmox <-> OPNsense, et sortie par défaut des locataires
vlan: 40
sous_reseau: 10.0.4.0/24
passerelle_sortie: 10.0.4.1
mtu: 1500
# LES SIX ZONES DU SITE. Une préoccupation par zone.
# Même FORME que le site de Chezlepro — le 3e octet reste le numéro de VLAN.
# Ce qui change : le 2e octet porte l'index du site (31) au lieu de 0.
# Les deux sites peuvent donc être reliés (§8 du guide) sans renumérotage.
- { nom: site-pilotage, description: Runner et pilotage, vlan: 31, sous_reseau: 10.31.31.0/24, pont: vmbr0, mtu: 1500 }
- { nom: site-autorite, description: Autorité de certification, vlan: 32, sous_reseau: 10.31.32.0/24, pont: vmbr0, mtu: 1500 }
- { nom: site-genome, description: Forge et cache de paquets, vlan: 33, sous_reseau: 10.31.33.0/24, pont: vmbr0, mtu: 1500 }
- { nom: site-service, description: Noms (DNS autoritaire), vlan: 34, sous_reseau: 10.31.34.0/24, pont: vmbr0, mtu: 1500 }
- { nom: site-sauvegarde, description: Dépôt de sauvegarde mutualisé, vlan: 35, sous_reseau: 10.31.35.0/24, pont: vmbr0, mtu: 1500 }
- { nom: site-supervision, description: Supervision et observabilité, vlan: 36, sous_reseau: 10.31.36.0/24, pont: vmbr0, mtu: 1500 }
hotes:
# L'UNIQUE NŒUD. `via` = l'interface physique qui porte le trunk vers la frontière.
- { nom: atelier, reseau: management, ip: 10.31.0.41, role: hyperviseur }
- { nom: atelier, reseau: transit-frontiere, ip: 10.0.4.41, role: hyperviseur, via: <<IFACE>> }
# LA FRONTIÈRE, patte par patte. Une ligne par zone qu'elle sert : c'est de là que
# le devis dérive les interfaces d'arrivée des règles (D-61 raisonne en ARRIVÉE).
- { nom: portail, reseau: management, ip: 10.31.0.1, role: frontiere }
- { nom: portail, reseau: transit-frontiere, ip: 10.0.4.1, role: frontiere }
- { nom: portail, reseau: site-pilotage, ip: 10.31.31.1, role: frontiere }
- { nom: portail, reseau: site-autorite, ip: 10.31.32.1, role: frontiere }
- { nom: portail, reseau: site-genome, ip: 10.31.33.1, role: frontiere }
- { nom: portail, reseau: site-service, ip: 10.31.34.1, role: frontiere }
- { nom: portail, reseau: site-sauvegarde, ip: 10.31.35.1, role: frontiere }
- { nom: portail, reseau: site-supervision, ip: 10.31.36.1, role: frontiere }
# LE GABARIT ET SON STOCKAGE. Sur un nœud unique, `clone_complet` est le choix sûr :
# un clone lié dépend à vie du gabarit, et il n'y a pas d'autre nœud pour le porter.
materialisation:
# MÊME VMID QUE PARTOUT AILLEURS DANS LA FLOTTE. Le gabarit est le même actif d'un
# site à l'autre ; lui donner un numéro par site obligerait à le chercher.
vmid_modele: 99998
# `local-lvm` — le stockage que Proxmox pose à l'installation. Sur un nœud unique il
# n'y a rien d'autre, et c'est honnête de le dire : quinze clones complets y tiennent
# ou n'y tiennent pas, et c'est la première chose à mesurer sur place.
stockage: local-lvm
clone_complet: true