SITE-TechnoLibre/underlay.yml

195 lines
9.2 KiB
YAML
Raw Normal View History

# Underlay — infrastructure PHYSIQUE du site de TechnoLibre (noeud maurice).
#
# SITE DE REPRISE : il n'heberge aucune production. Chezlepro et TechnoLibre tournent au site
# de Chezlepro ; ce site-ci existe pour les REPRENDRE (exercice ou sinistre). C'est pourquoi
# il declare les deux index de locataires.
#
# UN SEUL NOEUD : pas de Ceph, pas d'iSCSI, pas de migration. Le gabarit et ses clones vivent
# sur la meme machine — le point unique de panne est total, et assume pour un site de reprise.
#
# Refait le 2026-10-12 sur le modele de SITE-Chezlepro (memes cles, memes zones, memes noms de
# VM) : le depot de septembre ne suivait plus les methodes du moteur. Les valeurs que seul le
# materiel peut dire restent marquees `<<...>>` — voir COLLECTE.md.
#
# Le moteur la monte par symlink (Set-OPS-public/underlay.yml -> ce fichier), ou la lit par
# `SETOPS_UNDERLAY` sans toucher au symlink. Validee par `make underlay` / preuve P23.
---
underlay:
# L'index du site lui-meme : 10.31.0.0/16. Les sites et les locataires se partagent la
# classe A, chacun avec SON index (Chezlepro : site 37, locataires 17 et 23).
index: 31
# Les locataires que ce site peut REPRENDRE, avec l'index qu'ils ont deja. Une reprise ne
# renumerote rien : le plan du locataire ne change pas, seul change le site qu'il habite.
tenants:
OPS-Chezlepro: 17
OPS-Technolibre: 23
# Le commutateur entre la frontiere et le noeud (confirme sur place le 2026-10-13) :
# 4 ports 2,5G et 4 SFP+, couche 2 seulement — ni routage ni filtrage. La carte 10G du
# noeud (2 SFP+) et un SFP+ du QOTOM y sont branches ; c'est la racine du spanning-tree.
routeur: caillou
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
# UN SEUL NOEUD : le routage des locataires vit dans l'EVPN du noeud (controleur EVPN0031,
# ASN 65031 — proxmox-hebergeur.yml). Sans commutateur L3, le mode `switch` obligerait la
# frontiere a porter une interface routee par zone de locataire.
routage_tenants: sdn
mtu_overlay: 1450
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
acl_inter_tenant: false
dialecte: binardat
stp:
mode: rstp
topologie: etoile
reseaux:
# LE PLAN D'ADMINISTRATION : un port physique de la frontiere (la LAN du QOTOM), non
# etiquete. C'est la que vivent le poste de l'exploitant (10.31.0.101), la frontiere (.1)
# et l'interface d'administration du noeud (.11). Aucune VM n'y nait.
- nom: management
nature: fabric
description: Equipements, frontiere, administration du noeud, poste de l'exploitant
segment_physique: true
sous_reseau: 10.31.0.0/24
passerelle: 10.31.0.1
mtu: 1500
# --- LES ZONES DU SITE — les memes qu'au site de Chezlepro --------------------------
# Une zone par nature d'autorite ; chacune est un VLAN sur `vmbr1` — le pont des VM, sur
# la carte 10G (`nic2`), separe de l'administration (`vmbr0` sur `nic0`, decision de
# Daniel le 2026-10-13) — avec sa patte `.1` sur la frontiere, qui police tout passage
# d'une zone a l'autre.
# L'adresse se derive de l'index et du VLAN : 10.31.<vlan>.0/24.
- nom: site-pilotage
nature: site
description: Le runner du SITE — voute de l'underlay, API Proxmox et OPNsense
vlan: 31
pont: vmbr1
mtu: 1500
- nom: site-autorite
nature: site
description: La racine de confiance — step-ca. Compromise, elle forge tout nom.
vlan: 32
pont: vmbr1
mtu: 1500
- nom: site-genome
nature: site
description: La forge et le cache — le code et les binaires dont tout descend
vlan: 33
pont: vmbr1
mtu: 1500
- nom: site-service
nature: site
description: La resolution — ce que toutes les zones interrogent
vlan: 34
pont: vmbr1
mtu: 1500
- nom: site-sauvegarde
nature: site
description: L'etat de TOUS les locataires — la zone la plus concentree du site
vlan: 35
pont: vmbr1
mtu: 1500
- nom: site-supervision
nature: site
description: Le temoin — ce qui sait quand les autres se taisent
vlan: 36
pont: vmbr1
mtu: 1500
- nom: site-publication
nature: site
description: L'edge du SITE et son DNS public — les seules machines faites pour etre JOINTES
vlan: 37
pont: vmbr1
mtu: 1500
- nom: transit-frontiere
nature: fabric
description: Frontiere nord/sud — lien du noeud ET chemin de sortie des locataires
vlan: 40
sous_reseau: 10.0.4.0/24
passerelle_sortie: 10.0.4.1
mtu: 1500
# Le transport VXLAN : une seule VTEP aujourd'hui, mais l'EVPN en exige une adresse, et
# un second noeud n'aura qu'a s'y ajouter.
- nom: underlay-vxlan
nature: fabric
description: Transport VXLAN entre VTEP — aucun trafic de gestion
vlan: 50
sous_reseau: 10.31.50.0/24
mtu: 1500
# LA FACE PUBLIQUE DU SITE (2026-10-13). Le site n'a qu'une adresse DHCP ; ses trois
# adresses fixes sont louees sur un VPS d'OVH (le relais) et lui arrivent par ce tunnel,
# INITIE PAR LA FRONTIERE. Le relais repond a l'ARP d'OVH pour elles et les route en /32
# dans le tunnel, sans traduction : elles arrivent intactes sur `requin`, qui les porte.
# Ni VLAN ni port : un tunnel ne traverse aucun commutateur.
- nom: relais
nature: fabric
fabric: relais
description: Tunnel WireGuard vers le relais OVH — par ou arrivent les adresses publiques
tunnel: wireguard
sous_reseau: 10.31.60.0/30
mtu: 1420
# LE LIEN ENTRE LES SITES (2026-10-13) — le tunnel WireGuard entre `bifrost-1` (site de
# Chezlepro, adresse fixe) et `requin` (site de TechnoLibre, DHCP derriere une traduction
# d'adresse : c'est LUI qui l'initie). Declare A L'IDENTIQUE dans les deux cartes. Il porte
# ce que les deux sites se doivent : la replication du DNS public et les sauvegardes
# croisees — rien d'autre, et rien tant que le devis ne l'a pas declare.
- nom: inter-sites
nature: fabric
fabric: inter-sites
description: Tunnel WireGuard entre les sites de Chezlepro et de TechnoLibre
tunnel: wireguard
sous_reseau: 172.31.0.0/30
mtu: 1412
hotes:
# Le lien entre les sites — voir le reseau `inter-sites`.
- { nom: requin, reseau: inter-sites, ip: 172.31.0.1, role: frontiere,
cle_publique: W3T5BG2exQqLWk19p6GDSu0xY4fSH8jtcRTr8P/xgFA= }
- { nom: bifrost-1, reseau: inter-sites, ip: 172.31.0.2, role: frontiere_pair,
site: SITE-Chezlepro, point_arrivee: "69.70.26.62:51820",
cle_publique: lc440DWd+BZaHrLOobUaZ3OZ1el3ggxnlpelYowQ2mc= }
- { nom: caillou, role: switch, reseau: management, ip: 10.31.0.111 }
# La frontiere (QOTOM) — hors flotte Ansible. `.1` partout : c'est l'invariant dont le
# devis derive les regles.
- { nom: requin, reseau: management, ip: 10.31.0.1, role: frontiere }
- { nom: requin, reseau: transit-frontiere, ip: 10.0.4.1, role: frontiere }
- { nom: requin, reseau: site-pilotage, ip: 10.31.31.1, role: frontiere }
- { nom: requin, reseau: site-autorite, ip: 10.31.32.1, role: frontiere }
- { nom: requin, reseau: site-genome, ip: 10.31.33.1, role: frontiere }
- { nom: requin, reseau: site-service, ip: 10.31.34.1, role: frontiere }
- { nom: requin, reseau: site-sauvegarde, ip: 10.31.35.1, role: frontiere }
- { nom: requin, reseau: site-supervision, ip: 10.31.36.1, role: frontiere }
- { nom: requin, reseau: site-publication, ip: 10.31.37.1, role: frontiere }
# Les CLES PUBLIQUES du tunnel ne sont pas des secrets : chaque bout a besoin de celle de
# l'autre. Les cles privees restent, l'une dans OPNsense, l'autre dans la voute du site
# (`vault_relais_wg_cle_privee`), pour que le relais se reconstruise sans changer de cle.
- { nom: requin, reseau: relais, ip: 10.31.60.2, role: frontiere,
cle_publique: mScwuAKruvArh8+WQuCO7I/sad26BBqyUTxjQ2I+/mM= }
# Le relais — VPS OVH, Debian 13, administre par Set-OPS (role `serveur_relais`). Sa
# console SSH reste sur son adresse propre ; les trois adresses relayees n'y sont pas
# attribuees (proxy ARP). Son port d'ecoute derive de l'index : 51800 + 31.
- { nom: relais, reseau: relais, ip: 10.31.60.1, role: relais, console: 15.235.101.239,
cle_publique: CC6qpkjcMAemkvZkD9URE8IO7CH3VFqGcXkU2rwvkRU= }
# Le noeud — ASUS Z10PE-D16 WS, deux processeurs, 2 x 128 Go. Deux cartes, deux roles
# (releve du 2026-10-13) : `nic0` (1G) porte `vmbr0`, l'administration seule ; `nic2`
# (10G) porte `vmbr1`, VLAN-aware et sans adresse, ou vivent les VLAN des VM.
- { nom: maurice, reseau: management, ip: 10.31.0.11, role: hyperviseur, via: vmbr0 }
- { nom: maurice, reseau: underlay-vxlan, ip: 10.31.50.11, role: hyperviseur, via: vmbr1 }
- { nom: maurice, reseau: transit-frontiere, ip: 10.0.4.11, role: hyperviseur, via: vmbr1 }
# Les machines du site naissent du gabarit du PLAN DU SITE (plan/10-intrants.yml), en
# clones complets, sur le NVMe du noeud (`nvme`, LVM-thin, ~460 Go) — decision de Daniel le
# 2026-10-13. `local-lvm` (130 Go, sur le SSD du systeme) ne les aurait pas tenues.
# `site-backup-01` deroge : il vit sur `miroir` (ZFS, 2 x 12 To) — plan/serveurs.yml.
materialisation:
stockage: nvme
clone_complet: true