# Underlay — la fabric physique partagee par les instances federees. # # Cluster-global : ces reseaux portent TOUTE la flotte, ils n'appartiennent a aucun # tenant et ne derivent d'aucun `index`. Ils vivent dans le *sous-sol* du modele. # # Copier vers `underlay.yml` (a la racine du moteur ; gitignore) et adapter a ta fabric. # Surchargeable par SETOPS_UNDERLAY=/chemin/underlay.yml. Absent => le devis switch # omet simplement la section underlay (retro-compatible). # # Regles (prouvees par P23 / `make underlay`) : # - VLAN < 1000 : franchement SOUS la plage tenant (VLAN tenant = 1000+index*10+zone). # - sous_reseau : ne chevauche aucun supernet tenant (10.(10+index).0.0/16, index >= 1). # => la plage 10.0.0.0/16 .. 10.10.0.0/16 est libre pour l'underlay. # - passerelle : OPTIONNELLE. Presente => un SVI est genere (routage inter-VLAN). # Storage/Ceph restent en general L2 pur (pas de passerelle). --- underlay: # FABRICS PHYSIQUES. Chaque reseau appartient a une fabric (`principal` par defaut). # Deux fabrics ne partagent aucun cable : le devis d'une fabric ne declare ni ne # transporte les VLAN d'une autre, et leurs spanning-tree sont independants. # Cas typique : le stockage jumbo (iSCSI, Ceph) sur ses propres switches 10G. # # Switch qui porte le routage : SVI de zone, ACL d'isolation, routes. Sans MLAG, # UN SEUL switch route ; les autres restent en L2 pur et reçoivent la partie B du # devis. Dupliquer les SVI sur plusieurs switches creerait autant de conflits # d'adresses qu'il y a de zones. Doit nommer un hote declare dans `hotes:`. routeur: switch-01 # Dialecte de CLI du commutateur (cisco | binardat). Propriete du MATERIEL : # decide la forme des masques d'ACL, des routes et du spanning-tree. dialecte: cisco # Spanning-tree de la fabric principale. `topologie` documente le cablage : # `etoile` = rayons depuis le routeur (aucun lien redondant, donc aucune boucle), # `anneau`/`maille` = liens redondants, RSTP devient indispensable. Le routeur est # toujours designe pont racine : l'arbre logique suit alors le cablage physique. stp: mode: rstp # rstp | mstp | pvst topologie: etoile # etoile | anneau | maille reseaux: - nom: management description: Switches, mgmt Proxmox, OOB/IPMI vlan: 10 sous_reseau: 10.0.0.0/24 passerelle: 10.0.0.1 # SVI (retirer pour du L2 pur) mtu: 1500 - nom: stockage-iscsi fabric: stockage # switches dedies, hors fabric principale description: iSCSI MPIO vlan: 20 sous_reseau: 10.0.1.0/24 mtu: 9000 # jumbo - nom: ceph-public fabric: stockage # switches dedies, hors fabric principale description: Clients <-> MON/OSD vlan: 30 sous_reseau: 10.0.2.0/24 mtu: 9000 - nom: ceph-cluster fabric: stockage # switches dedies, hors fabric principale description: OSD <-> OSD (replication, backfill, recovery) vlan: 31 sous_reseau: 10.0.3.0/24 mtu: 9000 # Transit vers la frontiere nord/sud (pare-feu de bordure). OPTIONNEL, mais sans lui # la flotte n'a ni sortie ni chemin de retour vers l'administration. # Il vit dans l'underlay parce qu'il est PARTAGE : la frontiere route vers TOUS les # supernets tenants par ce meme saut — il ne peut donc deriver d'aucun `index`. # `passerelle_sortie` = adresse du pare-feu sur le lien ; c'est elle qui fait emettre # la route par defaut et les routes de retour (section 5 de `make devis-reseau`). # Prevoir large : /29 laisse la place aux deux pare-feux pendant une transition. - nom: transit-frontiere description: Lien routeur est-ouest (switches L3) <-> frontiere nord/sud vlan: 40 sous_reseau: 10.0.4.0/29 passerelle: 10.0.4.1 # SVI du switch L3 passerelle_sortie: 10.0.4.2 # pare-feu de bordure = sortie par defaut de la flotte mtu: 1500 # Hotes fixes documentes (optionnel) : IP hors DHCP, verifiees dans leur reseau. # PORTS PHYSIQUES (optionnel). Sans eux, le devis emet des marqueurs # `` a remplacer a la main — et le travail est perdu a chaque # regeneration. Declares ici, le devis sort applicable tel quel. # hyperviseurs : ports terminaux vers Proxmox (portfast) # frontiere : port(s) vers le pare-feu de bordure (portfast) # rayons : {switch d'acces: port}, cote ROUTEUR uniquement # montante : port vers le routeur, cote SWITCH D'ACCES uniquement # `make underlay` refuse un port declare deux fois sur un meme equipement, un rayon # vers un switch inconnu, et une confusion rayons/montante. hotes: # Le switch designe `routeur` porte le SVI de management : son adresse de gestion # EST la passerelle du reseau. `make underlay` refuse les deux valeurs divergentes. - nom: switch-01 reseau: management ip: 10.0.0.1 ports: hyperviseurs: [Te1/0/1, Te1/0/2, Te1/0/3] frontiere: [Gi1/0/23] rayons: { switch-02: Te1/0/47, switch-03: Te1/0/48 } - nom: switch-02 reseau: management ip: 10.0.0.3 ports: montante: Te1/0/48 hyperviseurs: [Te1/0/1, Te1/0/2, Te1/0/3] - { nom: switch-03, reseau: management, ip: 10.0.0.4 }