Nomenclature : VLAN dérivé (index × 10 + zone) pour réseau convergé

Sur un trunk convergé (tenants partagent l'infra), les VLAN doivent être uniques
GLOBALEMENT. deriver_nomenclature (ip-miroir) dérive VLAN = index×10 + zone : chaque
tenant son bloc de 10, 1-9 réservés à l'infra partagée. Le VLAN contenant le tenant,
le VMID mène avec le VLAN (VLAN·octet·seq, ≤ 9 chiffres Proxmox). compact (lab)
inchangé. GUI (miroir) + validation 1-4094 : compatibles.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Daniel Allaire 2026-07-05 20:38:44 -04:00
parent a1cfe77b4a
commit 02bbba61b3
2 changed files with 16 additions and 2 deletions

View file

@ -2,6 +2,14 @@
## 2026-07-05
### Modifié
- **VLAN dérivé du tenant (réseau convergé).** `deriver_nomenclature` (schéma `ip-miroir`) dérive
désormais le VLAN = `index × 10 + zone`**unique globalement** sur un trunk convergé (chaque
tenant son bloc de 10 ; 1-9 réservés à l'infra partagée). Le VLAN contenant déjà le tenant (1er
chiffre = index), le VMID **mène avec le VLAN** (`VLAN·octet·seq`, ≤ 9 chiffres Proxmox). Ex.
Technolibre (index 2) → VLANs 21-26, VMID 2101101. Le schéma `compact` (lab, sandbox) reste
inchangé. Champs `vlan:` codés en dur retirés des catégories ip-miroir (désormais dérivés).
### Ajouté
- **Zéro-confiance est-ouest — flux Métriques, Logs et Courriel chiffrés.** Suite du chantier
(après PostgreSQL) : **métriques** (node_exporter sert en HTTPS via cert step-ca +

View file

@ -335,12 +335,18 @@ def deriver_nomenclature(fonction: str, seq: int, nomenclature: dict) -> dict |
# index.categorie.service.sequence (largeur variable, VMID des instances existantes).
schema = nomenclature.get("vmid_schema", "compact")
if schema == "ip-miroir":
vmid = f"{index}{int(c.get('vlan', 0)):03d}{hote:03d}{int(seq):02d}"
# VLAN DERIVE : index x 10 + zone. Unique GLOBALEMENT sur un trunk convergE
# (chaque tenant a son bloc de 10 ; 1-9 reserves a l'infra partagee). Le VLAN
# contient deja le tenant (1er chiffre = index), donc le VMID MENE avec le VLAN
# (pas de chiffre d'index separe) et tient dans les 9 chiffres max de Proxmox.
vlan = index * 10 + int(cat)
vmid = f"{vlan}{hote:03d}{int(seq):02d}"
else:
vlan = c.get("vlan")
vmid = f"{index}{cat}{svc}{int(seq):02d}"
return {
"vmid": vmid,
"vlan": c.get("vlan"),
"vlan": vlan,
"adresse_ip": f"{base3}.{hote}",
"passerelle": c.get("passerelle"),
"cidr": nomenclature.get("cidr_hote", 24),