gabarit : modeleChezlepro -> modeleSetOPS, et une porte pour l'hebergeur
Le gabarit portait le nom du mauvais proprietaire. Les TROIS instances
(Chezlepro, Technolibre, lab) le declaraient et pointaient deja toutes sur le
MEME VMID 99998 — alors que le commentaire affirmait « chaque tenant a SON
golden template ». Faux depuis longtemps, et invisible en lisant un seul fichier.
Renomme sur le cluster et dans les trois instances. Le gabarit est un artefact du
MOTEUR, pas d'un tenant ; le nom d'un tenant sur le gabarit d'un autre etait un
piege qui n'attendait qu'un troisieme hebergeur. model_creer.py et
config_proxmox.py proposaient encore modele-debian13 : alignes.
Sans risque : le clonage se fait par VMID depuis le 2026-08-10, le nom ne sert
plus qu'a l'affichage.
NOUVELLE PORTE dans l'aiguillage : docs/preparer-un-site-hebergeur.md, pour
quelqu'un qui prete son materiel sans rien connaitre de Set-OPS. Ecrit a partir
du depot — VLAN et MTU d'underlay.yml, bloc par tenant de
inventory_rules.supernet_de(), privileges du jeton de config-proxmox.md,
dimensionnement (~460 Go, ~37 Go de RAM) mesure sur la flotte vivante.
Deux avertissements y figurent parce qu'ils ont deja coute cher ici : un gabarit
personnalise recopie son identite dans chaque clone, et un blocage contourne en
silence se paie en heures.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 14:36:44 -04:00
|
|
|
# Préparer un site hébergeur
|
|
|
|
|
|
|
|
|
|
> **Pour qui :** l'**hébergeur** qui met son matériel à disposition — il n'a pas besoin de
|
|
|
|
|
> connaître Set-OPS. L'exploitant du tenant lui transmet ce document, puis relit §7 pour
|
|
|
|
|
> savoir ce qu'il doit recevoir en retour.
|
|
|
|
|
|
|
|
|
|
Set-OPS déploie un écosystème complet (annuaire, SSO, courriel, forge, nuage
|
|
|
|
|
collaboratif, supervision, sauvegardes) à partir d'un plan. Tout cet adressage se
|
|
|
|
|
**dérive** d'un seul chiffre — l'`index` du tenant.
|
|
|
|
|
|
|
|
|
|
Ce que la machine ne peut pas deviner, c'est le **matériel** : le câblage, le nom des
|
|
|
|
|
stockages, le chemin de sortie vers Internet. C'est l'objet de ce document, et c'est tout
|
|
|
|
|
ce qui est demandé à l'hébergeur.
|
|
|
|
|
|
|
|
|
|
## 1. Le partage des rôles
|
|
|
|
|
|
|
|
|
|
| | Décide quoi | Où ça vit |
|
|
|
|
|
|---|---|---|
|
|
|
|
|
| **Hébergeur** | réseau physique, pare-feu de bordure, stockage, hyperviseur | `underlay.yml` et `proxmox-hebergeur.yml`, dans **son** dépôt |
|
|
|
|
|
| **Tenant** | quels services, sur quel nœud/stockage/pont les poser | `inventories/*/group_vars/`, dans le dépôt du tenant |
|
|
|
|
|
|
|
|
|
|
Cette séparation n'est pas cosmétique. Tant que ces valeurs étaient recopiées chez chaque
|
|
|
|
|
tenant, elles ont **divergé** : deux inventaires contradictoires du même cluster, avec des
|
|
|
|
|
listes de stockages et de ponts différentes. Un hébergeur décrit son matériel **une fois**.
|
|
|
|
|
|
|
|
|
|
## 2. Le plan d'adressage — la seule chose à respecter à la lettre
|
|
|
|
|
|
D-77 : l'underlay derive du meme index que son tenant, le stockage sort en 192.168
Mon « numero de site » etait un SECOND SEED a tenir et a synchroniser, alors que
tout derive deja d'index (D-17). Rejete au profit de la proposition de l'exploitant,
meilleure : l'underlay occupe la BANDE BASSE du supernet du tenant,
10.(10+index).0-15.x.
La bande basse est sure PAR LA REGLE, pas par chance : les zones valent
10.(10+index).(15+categorie).0/24, donc 3e octet >= 16. Les octets 0 a 15 ne sont
JAMAIS alloues. Consequence heureuse : les 3e et derniers octets de l'underlay
actuel sont preserves — seul le 2e change, et l'invariant .1 (D-04) survit.
Verifie sur les quatre cas qui comptent : Technolibre sur l'underlay de Chezlepro,
Technolibre chez Mathieu (meme /16, bandes disjointes), Chezlepro restaure chez
Mathieu, et le lien entre les deux sites. Aucun recouvrement.
Le STOCKAGE en sort : jumbo, non route, il ne quitte jamais son site, donc aucun
besoin d'etre unique. Identique partout en 192.168.<vlan>.0/24 — l'adresse dit son
VLAN. Contrepartie assumee : ces reseaux ne traverseront jamais un lien
inter-sites ; sans consequence, puisque ce qui voyage entre deux sites est l'ETAT,
par le depot de sauvegarde, pas le stockage bloc.
Calendrier : applique tout de suite la ou c'est gratuit (site neuf), differe a
froid pour Chezlepro — 10.0.x.x et 10.21.x.x ne se chevauchent pas entre-temps.
Reste a outiller : borner le 3e octet de l'underlay sous OCTET_ZONE + 1 (P23).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 15:49:29 -04:00
|
|
|
**Un site dérive du même `index` que son tenant.** Il n'y a pas de second registre à
|
|
|
|
|
tenir : le seul seed de tout l'adressage reste l'`index`, et l'underlay occupe la **bande
|
|
|
|
|
basse** du supernet — celle que la dérivation des tenants n'alloue jamais.
|
2026-08-12 15:34:25 -04:00
|
|
|
|
D-78 : destination ou chemin — et le VLAN 50 pour eviter une collision
D-77 sortait deja le stockage de l'espace derive, mais par une EXCEPTION NOMMEE
plutot que par une regle. La question de l'exploitant — « le VLAN 40 n'a aucune
VM, pourquoi ne pas lui donner une adresse non routee ? » — a fait apparaitre le
critere juste.
Ce n'est pas « y a-t-il des machines dedans » (le VLAN de gestion n'en a pas plus
qu'un autre), c'est : ce reseau est-il jamais une DESTINATION, ou seulement un
CHEMIN ?
gestion (10) atteinte depuis ailleurs -> 10.<index>.0.0/24, UNIQUE
transit (40) prochains sauts seulement -> 192.168.40.0/24
transport VXLAN(50) VTEP <-> VTEP -> 192.168.50.0/24
stockage (20/30/31) baie <-> hyperviseurs -> 192.168.20/30/31.0/24
Sur six reseaux, CINQ cessent d'exiger la moindre coordination entre deux
hebergeurs, et « unique » redevient signifiant.
L'OS, trouve par l'exploitant avant ecriture : le VLAN 11 aurait produit
192.168.11.0/24, DEJA occupe par la gestion des hyperviseurs sur vmbr0
(passerelle .254). Le 11 se liberera quand cette gestion rejoindra 10.<index>.0.x
— mais faire dependre un plan d'adressage de l'ORDRE d'une migration est le genre
de dette qui se paie un an plus tard. Le transport passe au VLAN 50 : libre,
192.168.50.0/24 libre, et ne depend de rien. Verifie : rien ne code le 11 en dur.
underlay.yml n'est PAS modifie : il decrit le materiel tel qu'il est, et y ecrire
les nouvelles plages avant le deplacement physique le ferait mentir. Les adresses
changeront avec le materiel, dans l'ordre du runbook §6.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 17:50:05 -04:00
|
|
|
| Rôle | VLAN | Sous-réseau | MTU | Nature |
|
gabarit : modeleChezlepro -> modeleSetOPS, et une porte pour l'hebergeur
Le gabarit portait le nom du mauvais proprietaire. Les TROIS instances
(Chezlepro, Technolibre, lab) le declaraient et pointaient deja toutes sur le
MEME VMID 99998 — alors que le commentaire affirmait « chaque tenant a SON
golden template ». Faux depuis longtemps, et invisible en lisant un seul fichier.
Renomme sur le cluster et dans les trois instances. Le gabarit est un artefact du
MOTEUR, pas d'un tenant ; le nom d'un tenant sur le gabarit d'un autre etait un
piege qui n'attendait qu'un troisieme hebergeur. model_creer.py et
config_proxmox.py proposaient encore modele-debian13 : alignes.
Sans risque : le clonage se fait par VMID depuis le 2026-08-10, le nom ne sert
plus qu'a l'affichage.
NOUVELLE PORTE dans l'aiguillage : docs/preparer-un-site-hebergeur.md, pour
quelqu'un qui prete son materiel sans rien connaitre de Set-OPS. Ecrit a partir
du depot — VLAN et MTU d'underlay.yml, bloc par tenant de
inventory_rules.supernet_de(), privileges du jeton de config-proxmox.md,
dimensionnement (~460 Go, ~37 Go de RAM) mesure sur la flotte vivante.
Deux avertissements y figurent parce qu'ils ont deja coute cher ici : un gabarit
personnalise recopie son identite dans chaque clone, et un blocage contourne en
silence se paie en heures.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 14:36:44 -04:00
|
|
|
|---|---|---|---|---|
|
D-78 : destination ou chemin — et le VLAN 50 pour eviter une collision
D-77 sortait deja le stockage de l'espace derive, mais par une EXCEPTION NOMMEE
plutot que par une regle. La question de l'exploitant — « le VLAN 40 n'a aucune
VM, pourquoi ne pas lui donner une adresse non routee ? » — a fait apparaitre le
critere juste.
Ce n'est pas « y a-t-il des machines dedans » (le VLAN de gestion n'en a pas plus
qu'un autre), c'est : ce reseau est-il jamais une DESTINATION, ou seulement un
CHEMIN ?
gestion (10) atteinte depuis ailleurs -> 10.<index>.0.0/24, UNIQUE
transit (40) prochains sauts seulement -> 192.168.40.0/24
transport VXLAN(50) VTEP <-> VTEP -> 192.168.50.0/24
stockage (20/30/31) baie <-> hyperviseurs -> 192.168.20/30/31.0/24
Sur six reseaux, CINQ cessent d'exiger la moindre coordination entre deux
hebergeurs, et « unique » redevient signifiant.
L'OS, trouve par l'exploitant avant ecriture : le VLAN 11 aurait produit
192.168.11.0/24, DEJA occupe par la gestion des hyperviseurs sur vmbr0
(passerelle .254). Le 11 se liberera quand cette gestion rejoindra 10.<index>.0.x
— mais faire dependre un plan d'adressage de l'ORDRE d'une migration est le genre
de dette qui se paie un an plus tard. Le transport passe au VLAN 50 : libre,
192.168.50.0/24 libre, et ne depend de rien. Verifie : rien ne code le 11 en dur.
underlay.yml n'est PAS modifie : il decrit le materiel tel qu'il est, et y ecrire
les nouvelles plages avant le deplacement physique le ferait mentir. Les adresses
changeront avec le materiel, dans l'ordre du runbook §6.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 17:50:05 -04:00
|
|
|
| **Gestion** | 10 | `10.<index>.0.0/24` | 1500 | **destination** — unique par site |
|
|
|
|
|
| Sortie des tenants | 40 | `192.168.40.0/24` | 1500 | chemin — identique partout |
|
|
|
|
|
| Transport VXLAN | 50 | `192.168.50.0/24` | 1500 | chemin — identique partout |
|
|
|
|
|
| Stockage iSCSI | 20 | `192.168.20.0/24` | 9000 | chemin — identique partout |
|
|
|
|
|
| Ceph public | 30 | `192.168.30.0/24` | 9000 | chemin — identique partout |
|
|
|
|
|
| Ceph cluster | 31 | `192.168.31.0/24` | 9000 | chemin — identique partout |
|
D-77 : l'underlay derive du meme index que son tenant, le stockage sort en 192.168
Mon « numero de site » etait un SECOND SEED a tenir et a synchroniser, alors que
tout derive deja d'index (D-17). Rejete au profit de la proposition de l'exploitant,
meilleure : l'underlay occupe la BANDE BASSE du supernet du tenant,
10.(10+index).0-15.x.
La bande basse est sure PAR LA REGLE, pas par chance : les zones valent
10.(10+index).(15+categorie).0/24, donc 3e octet >= 16. Les octets 0 a 15 ne sont
JAMAIS alloues. Consequence heureuse : les 3e et derniers octets de l'underlay
actuel sont preserves — seul le 2e change, et l'invariant .1 (D-04) survit.
Verifie sur les quatre cas qui comptent : Technolibre sur l'underlay de Chezlepro,
Technolibre chez Mathieu (meme /16, bandes disjointes), Chezlepro restaure chez
Mathieu, et le lien entre les deux sites. Aucun recouvrement.
Le STOCKAGE en sort : jumbo, non route, il ne quitte jamais son site, donc aucun
besoin d'etre unique. Identique partout en 192.168.<vlan>.0/24 — l'adresse dit son
VLAN. Contrepartie assumee : ces reseaux ne traverseront jamais un lien
inter-sites ; sans consequence, puisque ce qui voyage entre deux sites est l'ETAT,
par le depot de sauvegarde, pas le stockage bloc.
Calendrier : applique tout de suite la ou c'est gratuit (site neuf), differe a
froid pour Chezlepro — 10.0.x.x et 10.21.x.x ne se chevauchent pas entre-temps.
Reste a outiller : borner le 3e octet de l'underlay sous OCTET_ZONE + 1 (P23).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 15:49:29 -04:00
|
|
|
|
adressage : le decalage de +10 est retire, l'index se lit dans l'adresse
supernet_de rendait 10.(10+index).0.0/16. Personne ne savait plus pourquoi : ni le
commentaire de la constante, ni le wiki, ni le commit fondateur 36a882b ne le
justifiaient. Trois endroits consultes, zero raison ecrite.
Ses deux effets constates :
- il reservait 10.0-10.9 sous la plage tenant. Utile tant que l'underlay vivait
la — mais D-77 l'a fait entrer dans la bande basse de son propre /16, ce qui a
vide cette reserve de son role la veille ;
- il eloignait le premier tenant de 10.0.0.0/16, la plage la plus repandue en
reseau domestique. Ce risque revient donc aux index bas, et c'est ASSUME.
En echange l'index se lit directement dans l'adresse (17 -> 10.17.x.x) et le
plafond passe de 245 a 255 ecosystemes federes.
Chezlepro (17) 10.27.0.0/16 -> 10.17.0.0/16
Technolibre (11) 10.21.0.0/16 -> 10.11.0.0/16
lab (1) 10.11.0.0/16 -> 10.1.0.0/16
Doc alignee : les trois pages du wiki, multi-instances.md (plafond et exemple
devenus faux arithmetiquement), sdn-evpn.md, le libelle de la GUI, la docstring
d'underlay.py, D-77, et le document de preparation d'un site hebergeur. Les
CONSTATS DE TERRAIN dates sont laisses tels quels : ce sont des mesures.
CE COMMIT NE RENUMEROTE RIEN. Il change ce que le plan DERIVE ; l'inventaire
applique porte toujours 10.27.x.x et les quatorze VM tournent dessus. Appliquer
sans reconstruire rendrait la flotte injoignable — le renumerotage est une
operation a part, a mener a froid.
Au passage, retire un debris : une copie de conflit Nextcloud de
serveur_powerdns/defaults/main.yml, IDENTIQUE a l'original, commitee par accident
dans 1295eea et jamais chargee par Ansible.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 16:16:08 -04:00
|
|
|
Index 17 → gestion en `10.17.0.0/24` ; index 11 → `10.11.0.0/24`. Deux sites ne peuvent
|
D-77 : l'underlay derive du meme index que son tenant, le stockage sort en 192.168
Mon « numero de site » etait un SECOND SEED a tenir et a synchroniser, alors que
tout derive deja d'index (D-17). Rejete au profit de la proposition de l'exploitant,
meilleure : l'underlay occupe la BANDE BASSE du supernet du tenant,
10.(10+index).0-15.x.
La bande basse est sure PAR LA REGLE, pas par chance : les zones valent
10.(10+index).(15+categorie).0/24, donc 3e octet >= 16. Les octets 0 a 15 ne sont
JAMAIS alloues. Consequence heureuse : les 3e et derniers octets de l'underlay
actuel sont preserves — seul le 2e change, et l'invariant .1 (D-04) survit.
Verifie sur les quatre cas qui comptent : Technolibre sur l'underlay de Chezlepro,
Technolibre chez Mathieu (meme /16, bandes disjointes), Chezlepro restaure chez
Mathieu, et le lien entre les deux sites. Aucun recouvrement.
Le STOCKAGE en sort : jumbo, non route, il ne quitte jamais son site, donc aucun
besoin d'etre unique. Identique partout en 192.168.<vlan>.0/24 — l'adresse dit son
VLAN. Contrepartie assumee : ces reseaux ne traverseront jamais un lien
inter-sites ; sans consequence, puisque ce qui voyage entre deux sites est l'ETAT,
par le depot de sauvegarde, pas le stockage bloc.
Calendrier : applique tout de suite la ou c'est gratuit (site neuf), differe a
froid pour Chezlepro — 10.0.x.x et 10.21.x.x ne se chevauchent pas entre-temps.
Reste a outiller : borner le 3e octet de l'underlay sous OCTET_ZONE + 1 (P23).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 15:49:29 -04:00
|
|
|
donc **pas** se chevaucher, sans qu'on ait rien de plus à décider.
|
|
|
|
|
|
|
|
|
|
**Les VLAN ne changent jamais** d'un site à l'autre : ils sont locaux, ils ne traversent
|
|
|
|
|
aucun lien inter-sites. Un seul modèle mental, et l'adresse de stockage porte son propre
|
|
|
|
|
numéro de VLAN — `192.168.20.x` est sur le VLAN 20.
|
|
|
|
|
|
|
|
|
|
> **Pourquoi la bande basse est sûre, et non pas seulement libre aujourd'hui.** Les zones
|
adressage : le decalage de +10 est retire, l'index se lit dans l'adresse
supernet_de rendait 10.(10+index).0.0/16. Personne ne savait plus pourquoi : ni le
commentaire de la constante, ni le wiki, ni le commit fondateur 36a882b ne le
justifiaient. Trois endroits consultes, zero raison ecrite.
Ses deux effets constates :
- il reservait 10.0-10.9 sous la plage tenant. Utile tant que l'underlay vivait
la — mais D-77 l'a fait entrer dans la bande basse de son propre /16, ce qui a
vide cette reserve de son role la veille ;
- il eloignait le premier tenant de 10.0.0.0/16, la plage la plus repandue en
reseau domestique. Ce risque revient donc aux index bas, et c'est ASSUME.
En echange l'index se lit directement dans l'adresse (17 -> 10.17.x.x) et le
plafond passe de 245 a 255 ecosystemes federes.
Chezlepro (17) 10.27.0.0/16 -> 10.17.0.0/16
Technolibre (11) 10.21.0.0/16 -> 10.11.0.0/16
lab (1) 10.11.0.0/16 -> 10.1.0.0/16
Doc alignee : les trois pages du wiki, multi-instances.md (plafond et exemple
devenus faux arithmetiquement), sdn-evpn.md, le libelle de la GUI, la docstring
d'underlay.py, D-77, et le document de preparation d'un site hebergeur. Les
CONSTATS DE TERRAIN dates sont laisses tels quels : ce sont des mesures.
CE COMMIT NE RENUMEROTE RIEN. Il change ce que le plan DERIVE ; l'inventaire
applique porte toujours 10.27.x.x et les quatorze VM tournent dessus. Appliquer
sans reconstruire rendrait la flotte injoignable — le renumerotage est une
operation a part, a mener a froid.
Au passage, retire un debris : une copie de conflit Nextcloud de
serveur_powerdns/defaults/main.yml, IDENTIQUE a l'original, commitee par accident
dans 1295eea et jamais chargee par Ansible.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 16:16:08 -04:00
|
|
|
> d'un tenant sont dérivées en `10.<index>.(15+categorie).0/24` : leur troisième octet
|
D-77 : l'underlay derive du meme index que son tenant, le stockage sort en 192.168
Mon « numero de site » etait un SECOND SEED a tenir et a synchroniser, alors que
tout derive deja d'index (D-17). Rejete au profit de la proposition de l'exploitant,
meilleure : l'underlay occupe la BANDE BASSE du supernet du tenant,
10.(10+index).0-15.x.
La bande basse est sure PAR LA REGLE, pas par chance : les zones valent
10.(10+index).(15+categorie).0/24, donc 3e octet >= 16. Les octets 0 a 15 ne sont
JAMAIS alloues. Consequence heureuse : les 3e et derniers octets de l'underlay
actuel sont preserves — seul le 2e change, et l'invariant .1 (D-04) survit.
Verifie sur les quatre cas qui comptent : Technolibre sur l'underlay de Chezlepro,
Technolibre chez Mathieu (meme /16, bandes disjointes), Chezlepro restaure chez
Mathieu, et le lien entre les deux sites. Aucun recouvrement.
Le STOCKAGE en sort : jumbo, non route, il ne quitte jamais son site, donc aucun
besoin d'etre unique. Identique partout en 192.168.<vlan>.0/24 — l'adresse dit son
VLAN. Contrepartie assumee : ces reseaux ne traverseront jamais un lien
inter-sites ; sans consequence, puisque ce qui voyage entre deux sites est l'ETAT,
par le depot de sauvegarde, pas le stockage bloc.
Calendrier : applique tout de suite la ou c'est gratuit (site neuf), differe a
froid pour Chezlepro — 10.0.x.x et 10.21.x.x ne se chevauchent pas entre-temps.
Reste a outiller : borner le 3e octet de l'underlay sous OCTET_ZONE + 1 (P23).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 15:49:29 -04:00
|
|
|
> vaut donc **16 au minimum**, et croît avec le nombre de zones. Les octets `0` à `15`
|
|
|
|
|
> ne sont **jamais** alloués — c'est une propriété de la règle, pas une place restée
|
|
|
|
|
> vide. L'underlay y tient largement.
|
|
|
|
|
|
D-78 : destination ou chemin — et le VLAN 50 pour eviter une collision
D-77 sortait deja le stockage de l'espace derive, mais par une EXCEPTION NOMMEE
plutot que par une regle. La question de l'exploitant — « le VLAN 40 n'a aucune
VM, pourquoi ne pas lui donner une adresse non routee ? » — a fait apparaitre le
critere juste.
Ce n'est pas « y a-t-il des machines dedans » (le VLAN de gestion n'en a pas plus
qu'un autre), c'est : ce reseau est-il jamais une DESTINATION, ou seulement un
CHEMIN ?
gestion (10) atteinte depuis ailleurs -> 10.<index>.0.0/24, UNIQUE
transit (40) prochains sauts seulement -> 192.168.40.0/24
transport VXLAN(50) VTEP <-> VTEP -> 192.168.50.0/24
stockage (20/30/31) baie <-> hyperviseurs -> 192.168.20/30/31.0/24
Sur six reseaux, CINQ cessent d'exiger la moindre coordination entre deux
hebergeurs, et « unique » redevient signifiant.
L'OS, trouve par l'exploitant avant ecriture : le VLAN 11 aurait produit
192.168.11.0/24, DEJA occupe par la gestion des hyperviseurs sur vmbr0
(passerelle .254). Le 11 se liberera quand cette gestion rejoindra 10.<index>.0.x
— mais faire dependre un plan d'adressage de l'ORDRE d'une migration est le genre
de dette qui se paie un an plus tard. Le transport passe au VLAN 50 : libre,
192.168.50.0/24 libre, et ne depend de rien. Verifie : rien ne code le 11 en dur.
underlay.yml n'est PAS modifie : il decrit le materiel tel qu'il est, et y ecrire
les nouvelles plages avant le deplacement physique le ferait mentir. Les adresses
changeront avec le materiel, dans l'ordre du runbook §6.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 17:50:05 -04:00
|
|
|
> **Un seul réseau doit être unique, et c'est la gestion.** Le critère n'est pas « y a-t-il
|
|
|
|
|
> des machines dedans » — le VLAN de gestion n'en a pas plus qu'un autre — c'est : **ce
|
|
|
|
|
> réseau est-il jamais une destination, ou seulement un chemin ?**
|
|
|
|
|
>
|
|
|
|
|
> La gestion est une destination : le poste de l'exploitant, un VPN, demain un lien
|
|
|
|
|
> inter-sites doivent l'**atteindre**. Les autres ne sont que traversés — le transit ne
|
|
|
|
|
> porte que des prochains sauts entre deux voisins directs, le VXLAN va d'un hyperviseur
|
|
|
|
|
> à l'autre, le stockage de la baie aux hyperviseurs. Aucun n'est jamais joint depuis
|
|
|
|
|
> l'extérieur de son propre lien.
|
|
|
|
|
>
|
|
|
|
|
> D'où `192.168.<vlan>.0/24`, **identique chez tous les hébergeurs** : l'adresse dit son
|
|
|
|
|
> VLAN, et cinq réseaux sur six cessent d'exiger la moindre coordination. Contrepartie
|
|
|
|
|
> assumée : ils ne pourront jamais franchir un lien inter-sites. Sans conséquence — ce qui
|
|
|
|
|
> voyage entre deux sites, c'est l'**état** (par le dépôt de sauvegarde), pas la plomberie.
|
D-77 : l'underlay derive du meme index que son tenant, le stockage sort en 192.168
Mon « numero de site » etait un SECOND SEED a tenir et a synchroniser, alors que
tout derive deja d'index (D-17). Rejete au profit de la proposition de l'exploitant,
meilleure : l'underlay occupe la BANDE BASSE du supernet du tenant,
10.(10+index).0-15.x.
La bande basse est sure PAR LA REGLE, pas par chance : les zones valent
10.(10+index).(15+categorie).0/24, donc 3e octet >= 16. Les octets 0 a 15 ne sont
JAMAIS alloues. Consequence heureuse : les 3e et derniers octets de l'underlay
actuel sont preserves — seul le 2e change, et l'invariant .1 (D-04) survit.
Verifie sur les quatre cas qui comptent : Technolibre sur l'underlay de Chezlepro,
Technolibre chez Mathieu (meme /16, bandes disjointes), Chezlepro restaure chez
Mathieu, et le lien entre les deux sites. Aucun recouvrement.
Le STOCKAGE en sort : jumbo, non route, il ne quitte jamais son site, donc aucun
besoin d'etre unique. Identique partout en 192.168.<vlan>.0/24 — l'adresse dit son
VLAN. Contrepartie assumee : ces reseaux ne traverseront jamais un lien
inter-sites ; sans consequence, puisque ce qui voyage entre deux sites est l'ETAT,
par le depot de sauvegarde, pas le stockage bloc.
Calendrier : applique tout de suite la ou c'est gratuit (site neuf), differe a
froid pour Chezlepro — 10.0.x.x et 10.21.x.x ne se chevauchent pas entre-temps.
Reste a outiller : borner le 3e octet de l'underlay sous OCTET_ZONE + 1 (P23).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 15:49:29 -04:00
|
|
|
|
|
|
|
|
Un hébergeur qui n'exploite lui-même **aucun** tenant prend quand même un `index` : c'est
|
|
|
|
|
le seed de son site. Une seule règle, aucun cas particulier.
|
gabarit : modeleChezlepro -> modeleSetOPS, et une porte pour l'hebergeur
Le gabarit portait le nom du mauvais proprietaire. Les TROIS instances
(Chezlepro, Technolibre, lab) le declaraient et pointaient deja toutes sur le
MEME VMID 99998 — alors que le commentaire affirmait « chaque tenant a SON
golden template ». Faux depuis longtemps, et invisible en lisant un seul fichier.
Renomme sur le cluster et dans les trois instances. Le gabarit est un artefact du
MOTEUR, pas d'un tenant ; le nom d'un tenant sur le gabarit d'un autre etait un
piege qui n'attendait qu'un troisieme hebergeur. model_creer.py et
config_proxmox.py proposaient encore modele-debian13 : alignes.
Sans risque : le clonage se fait par VMID depuis le 2026-08-10, le nom ne sert
plus qu'a l'affichage.
NOUVELLE PORTE dans l'aiguillage : docs/preparer-un-site-hebergeur.md, pour
quelqu'un qui prete son materiel sans rien connaitre de Set-OPS. Ecrit a partir
du depot — VLAN et MTU d'underlay.yml, bloc par tenant de
inventory_rules.supernet_de(), privileges du jeton de config-proxmox.md,
dimensionnement (~460 Go, ~37 Go de RAM) mesure sur la flotte vivante.
Deux avertissements y figurent parce qu'ils ont deja coute cher ici : un gabarit
personnalise recopie son identite dans chaque clone, et un blocage contourne en
silence se paie en heures.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 14:36:44 -04:00
|
|
|
|
|
|
|
|
### Le MTU n'est pas un détail
|
|
|
|
|
|
|
|
|
|
Le trafic des VM voyage encapsulé en VXLAN, ce qui coûte **50 octets**. Avec un transport
|
|
|
|
|
à 1500, les VM tournent à **1450** — automatiquement, mais à condition que 1500 passe
|
|
|
|
|
réellement de bout en bout sur les VLAN 11 et 40. Un MTU rogné en chemin donne le pire des
|
|
|
|
|
symptômes : les petites requêtes passent, les grosses meurent, et rien n'est signalé.
|
|
|
|
|
|
|
|
|
|
Le jumbo (9000) sur le stockage est facultatif. **À moitié configuré, il ne fonctionne
|
|
|
|
|
pas du tout** — mieux vaut rester à 1500 que le poser sur un seul des trois maillons.
|
|
|
|
|
|
|
|
|
|
## 3. La frontière (pare-feu de bordure)
|
|
|
|
|
|
|
|
|
|
C'est le seul équipement qui route, et l'unique point de passage entre l'extérieur et
|
|
|
|
|
l'intérieur. Set-OPS **pilote ses règles par API** : le boîtier reste à l'hébergeur, rien
|
|
|
|
|
n'y est installé.
|
|
|
|
|
|
adressage : le decalage de +10 est retire, l'index se lit dans l'adresse
supernet_de rendait 10.(10+index).0.0/16. Personne ne savait plus pourquoi : ni le
commentaire de la constante, ni le wiki, ni le commit fondateur 36a882b ne le
justifiaient. Trois endroits consultes, zero raison ecrite.
Ses deux effets constates :
- il reservait 10.0-10.9 sous la plage tenant. Utile tant que l'underlay vivait
la — mais D-77 l'a fait entrer dans la bande basse de son propre /16, ce qui a
vide cette reserve de son role la veille ;
- il eloignait le premier tenant de 10.0.0.0/16, la plage la plus repandue en
reseau domestique. Ce risque revient donc aux index bas, et c'est ASSUME.
En echange l'index se lit directement dans l'adresse (17 -> 10.17.x.x) et le
plafond passe de 245 a 255 ecosystemes federes.
Chezlepro (17) 10.27.0.0/16 -> 10.17.0.0/16
Technolibre (11) 10.21.0.0/16 -> 10.11.0.0/16
lab (1) 10.11.0.0/16 -> 10.1.0.0/16
Doc alignee : les trois pages du wiki, multi-instances.md (plafond et exemple
devenus faux arithmetiquement), sdn-evpn.md, le libelle de la GUI, la docstring
d'underlay.py, D-77, et le document de preparation d'un site hebergeur. Les
CONSTATS DE TERRAIN dates sont laisses tels quels : ce sont des mesures.
CE COMMIT NE RENUMEROTE RIEN. Il change ce que le plan DERIVE ; l'inventaire
applique porte toujours 10.27.x.x et les quatorze VM tournent dessus. Appliquer
sans reconstruire rendrait la flotte injoignable — le renumerotage est une
operation a part, a mener a froid.
Au passage, retire un debris : une copie de conflit Nextcloud de
serveur_powerdns/defaults/main.yml, IDENTIQUE a l'original, commitee par accident
dans 1295eea et jamais chargee par Ansible.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 16:16:08 -04:00
|
|
|
**Interfaces :** le WAN (noter l'IP publique) ; la gestion en `10.<index>.0.1/24` ; le
|
D-78 : destination ou chemin — et le VLAN 50 pour eviter une collision
D-77 sortait deja le stockage de l'espace derive, mais par une EXCEPTION NOMMEE
plutot que par une regle. La question de l'exploitant — « le VLAN 40 n'a aucune
VM, pourquoi ne pas lui donner une adresse non routee ? » — a fait apparaitre le
critere juste.
Ce n'est pas « y a-t-il des machines dedans » (le VLAN de gestion n'en a pas plus
qu'un autre), c'est : ce reseau est-il jamais une DESTINATION, ou seulement un
CHEMIN ?
gestion (10) atteinte depuis ailleurs -> 10.<index>.0.0/24, UNIQUE
transit (40) prochains sauts seulement -> 192.168.40.0/24
transport VXLAN(50) VTEP <-> VTEP -> 192.168.50.0/24
stockage (20/30/31) baie <-> hyperviseurs -> 192.168.20/30/31.0/24
Sur six reseaux, CINQ cessent d'exiger la moindre coordination entre deux
hebergeurs, et « unique » redevient signifiant.
L'OS, trouve par l'exploitant avant ecriture : le VLAN 11 aurait produit
192.168.11.0/24, DEJA occupe par la gestion des hyperviseurs sur vmbr0
(passerelle .254). Le 11 se liberera quand cette gestion rejoindra 10.<index>.0.x
— mais faire dependre un plan d'adressage de l'ORDRE d'une migration est le genre
de dette qui se paie un an plus tard. Le transport passe au VLAN 50 : libre,
192.168.50.0/24 libre, et ne depend de rien. Verifie : rien ne code le 11 en dur.
underlay.yml n'est PAS modifie : il decrit le materiel tel qu'il est, et y ecrire
les nouvelles plages avant le deplacement physique le ferait mentir. Les adresses
changeront avec le materiel, dans l'ordre du runbook §6.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 17:50:05 -04:00
|
|
|
transit en `192.168.40.1/24`, par où sortent les machines du tenant.
|
D-77 : l'underlay derive du meme index que son tenant, le stockage sort en 192.168
Mon « numero de site » etait un SECOND SEED a tenir et a synchroniser, alors que
tout derive deja d'index (D-17). Rejete au profit de la proposition de l'exploitant,
meilleure : l'underlay occupe la BANDE BASSE du supernet du tenant,
10.(10+index).0-15.x.
La bande basse est sure PAR LA REGLE, pas par chance : les zones valent
10.(10+index).(15+categorie).0/24, donc 3e octet >= 16. Les octets 0 a 15 ne sont
JAMAIS alloues. Consequence heureuse : les 3e et derniers octets de l'underlay
actuel sont preserves — seul le 2e change, et l'invariant .1 (D-04) survit.
Verifie sur les quatre cas qui comptent : Technolibre sur l'underlay de Chezlepro,
Technolibre chez Mathieu (meme /16, bandes disjointes), Chezlepro restaure chez
Mathieu, et le lien entre les deux sites. Aucun recouvrement.
Le STOCKAGE en sort : jumbo, non route, il ne quitte jamais son site, donc aucun
besoin d'etre unique. Identique partout en 192.168.<vlan>.0/24 — l'adresse dit son
VLAN. Contrepartie assumee : ces reseaux ne traverseront jamais un lien
inter-sites ; sans consequence, puisque ce qui voyage entre deux sites est l'ETAT,
par le depot de sauvegarde, pas le stockage bloc.
Calendrier : applique tout de suite la ou c'est gratuit (site neuf), differe a
froid pour Chezlepro — 10.0.x.x et 10.21.x.x ne se chevauchent pas entre-temps.
Reste a outiller : borner le 3e octet de l'underlay sous OCTET_ZONE + 1 (P23).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 15:49:29 -04:00
|
|
|
|
|
|
|
|
> **Un point de routage porte le même dernier octet partout** : `.1`, quel que soit
|
|
|
|
|
> l'équipement qui l'assure. Invariant porté par la preuve `P23`.
|
gabarit : modeleChezlepro -> modeleSetOPS, et une porte pour l'hebergeur
Le gabarit portait le nom du mauvais proprietaire. Les TROIS instances
(Chezlepro, Technolibre, lab) le declaraient et pointaient deja toutes sur le
MEME VMID 99998 — alors que le commentaire affirmait « chaque tenant a SON
golden template ». Faux depuis longtemps, et invisible en lisant un seul fichier.
Renomme sur le cluster et dans les trois instances. Le gabarit est un artefact du
MOTEUR, pas d'un tenant ; le nom d'un tenant sur le gabarit d'un autre etait un
piege qui n'attendait qu'un troisieme hebergeur. model_creer.py et
config_proxmox.py proposaient encore modele-debian13 : alignes.
Sans risque : le clonage se fait par VMID depuis le 2026-08-10, le nom ne sert
plus qu'a l'affichage.
NOUVELLE PORTE dans l'aiguillage : docs/preparer-un-site-hebergeur.md, pour
quelqu'un qui prete son materiel sans rien connaitre de Set-OPS. Ecrit a partir
du depot — VLAN et MTU d'underlay.yml, bloc par tenant de
inventory_rules.supernet_de(), privileges du jeton de config-proxmox.md,
dimensionnement (~460 Go, ~37 Go de RAM) mesure sur la flotte vivante.
Deux avertissements y figurent parce qu'ils ont deja coute cher ici : un gabarit
personnalise recopie son identite dans chaque clone, et un blocage contourne en
silence se paie en heures.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 14:36:44 -04:00
|
|
|
|
|
|
|
|
**Un compte pour l'exploitant :** un utilisateur `ansible` avec sa clé publique.
|
|
|
|
|
**Aucun `sudo` n'est nécessaire** — l'outil lit et appelle l'API. Un compte qui ne peut
|
|
|
|
|
pas devenir root ne peut pas casser le pare-feu par accident.
|
|
|
|
|
|
|
|
|
|
**Une clé d'API :** sur OPNsense, *System → Access → Users → `ansible` → API keys → « + »*.
|
|
|
|
|
Le **secret n'est affiché qu'une seule fois**.
|
|
|
|
|
|
|
|
|
|
## 4. Le stockage
|
|
|
|
|
|
|
|
|
|
Rien de spécifique à Set-OPS : il faut que l'hyperviseur puisse y poser des disques de VM
|
|
|
|
|
(NFS ou iSCSI). Seuls comptent les stockages qui acceptent le contenu **`images`**.
|
|
|
|
|
|
|
|
|
|
**Dimensionnement**, mesuré sur un écosystème complet de quatorze machines :
|
|
|
|
|
|
|
|
|
|
| | Mesuré | À prévoir |
|
|
|
|
|
|---|---|---|
|
|
|
|
|
| Disques provisionnés | ~460 Go | 600 Go |
|
|
|
|
|
| RAM allouée | ~37 Go | 48 Go (32 à la rigueur, en démarrant par vagues) |
|
|
|
|
|
|
|
|
|
|
## 5. L'hyperviseur (Proxmox VE)
|
|
|
|
|
|
|
|
|
|
**À noter et transmettre :** le **nom exact du nœud** tel qu'il apparaît dans l'interface,
|
|
|
|
|
les **noms exacts** des stockages, et les **ponts** (`vmbrN`). Pas les descriptions : les
|
|
|
|
|
noms, tels qu'ils seront lus par l'API.
|
|
|
|
|
|
|
|
|
|
Sur un cluster de plusieurs nœuds, un pont doit exister **sur tous** — un pont partiel est
|
|
|
|
|
un piège : la VM ne démarre que sur certains nœuds, et l'erreur ne le dit pas.
|
|
|
|
|
|
|
|
|
|
**Le SDN n'est pas à configurer par l'hébergeur.** Set-OPS crée le contrôleur EVPN, la
|
|
|
|
|
zone (un VRF par tenant) et les réseaux. Il faut seulement que le SDN soit disponible et
|
|
|
|
|
le VLAN de transport en place.
|
|
|
|
|
|
|
|
|
|
### Le compte d'API
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
pveum user add ansible@pve
|
|
|
|
|
pveum aclmod / -user ansible@pve -role Administrator
|
|
|
|
|
pveum user token add ansible@pve set-ops --privsep 0
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Le **Token ID** et le **secret** sont à noter — le secret n'est affiché qu'une fois.
|
|
|
|
|
|
|
|
|
|
> **Sur `Administrator`, autant le dire franchement.** Le minimum documenté est
|
|
|
|
|
> `VM.Allocate`, `VM.Clone`, `VM.Config.*`, `Datastore.AllocateSpace` et les droits SDN.
|
|
|
|
|
> Mais l'outil crée aussi des objets réseau et détruit des VM : partir large le premier
|
|
|
|
|
> jour évite de courir après des `403` pendant le déploiement. **Le resserrer ensuite est
|
|
|
|
|
> un rôle sur mesure, dix minutes** — et c'est un geste à faire, pas une intention.
|
|
|
|
|
|
|
|
|
|
## 6. Le gabarit — et le piège qu'il porte
|
|
|
|
|
|
|
|
|
|
Toutes les VM sont clonées depuis un même modèle Debian, nommé **`modeleSetOPS`** : c'est
|
|
|
|
|
un artefact du **moteur**, pas d'un tenant. Une VM Debian minimale avec
|
|
|
|
|
`qemu-guest-agent` et `cloud-init`, convertie en template, suffit.
|
|
|
|
|
|
|
|
|
|
> **Ne pas le personnaliser.** Un gabarit qui porte une clé privée d'hôte SSH, un
|
|
|
|
|
> `/etc/resolv.conf` figé ou un compte nominatif recopie tout cela dans **chaque** clone.
|
|
|
|
|
> C'est arrivé, et il a fallu recapturer le gabarit puis reconstruire pour s'en défaire.
|
|
|
|
|
|
|
|
|
|
En cas de doute, laisser l'exploitant le fabriquer : c'est une demi-heure, et la procédure
|
|
|
|
|
est écrite (`docs/procedure-template-debian13-proxmox.md`).
|
|
|
|
|
|
|
|
|
|
## 7. Ce que l'exploitant doit recevoir
|
|
|
|
|
|
|
|
|
|
| Élément | Exemple |
|
|
|
|
|
|---|---|
|
|
|
|
|
| IP publique (WAN) | `203.0.113.10` |
|
|
|
|
|
| Nom du nœud hyperviseur | `asgard` |
|
|
|
|
|
| Stockages (noms exacts) | `TrueNAS`, `local-lvm` |
|
|
|
|
|
| Ponts | `vmbr0`, `vmbr3` |
|
|
|
|
|
| RAM et disque disponibles | 64 Go / 2 To |
|
|
|
|
|
| Modèle du commutateur | dicte le dialecte de CLI (`cisco` \| `binardat`) |
|
|
|
|
|
| Domaine public prévu | `exemple.ca` |
|
|
|
|
|
| Gabarit | fait, ou à faire |
|
D-77 : l'underlay derive du meme index que son tenant, le stockage sort en 192.168
Mon « numero de site » etait un SECOND SEED a tenir et a synchroniser, alors que
tout derive deja d'index (D-17). Rejete au profit de la proposition de l'exploitant,
meilleure : l'underlay occupe la BANDE BASSE du supernet du tenant,
10.(10+index).0-15.x.
La bande basse est sure PAR LA REGLE, pas par chance : les zones valent
10.(10+index).(15+categorie).0/24, donc 3e octet >= 16. Les octets 0 a 15 ne sont
JAMAIS alloues. Consequence heureuse : les 3e et derniers octets de l'underlay
actuel sont preserves — seul le 2e change, et l'invariant .1 (D-04) survit.
Verifie sur les quatre cas qui comptent : Technolibre sur l'underlay de Chezlepro,
Technolibre chez Mathieu (meme /16, bandes disjointes), Chezlepro restaure chez
Mathieu, et le lien entre les deux sites. Aucun recouvrement.
Le STOCKAGE en sort : jumbo, non route, il ne quitte jamais son site, donc aucun
besoin d'etre unique. Identique partout en 192.168.<vlan>.0/24 — l'adresse dit son
VLAN. Contrepartie assumee : ces reseaux ne traverseront jamais un lien
inter-sites ; sans consequence, puisque ce qui voyage entre deux sites est l'ETAT,
par le depot de sauvegarde, pas le stockage bloc.
Calendrier : applique tout de suite la ou c'est gratuit (site neuf), differe a
froid pour Chezlepro — 10.0.x.x et 10.21.x.x ne se chevauchent pas entre-temps.
Reste a outiller : borner le 3e octet de l'underlay sous OCTET_ZONE + 1 (P23).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 15:49:29 -04:00
|
|
|
| `index` du site | le même que son tenant — voir §2, à fixer **avant** de câbler |
|
2026-08-12 15:34:25 -04:00
|
|
|
| Accès de l'exploitant | sur place, ou lien vers le VLAN de gestion (voir §8) |
|
gabarit : modeleChezlepro -> modeleSetOPS, et une porte pour l'hebergeur
Le gabarit portait le nom du mauvais proprietaire. Les TROIS instances
(Chezlepro, Technolibre, lab) le declaraient et pointaient deja toutes sur le
MEME VMID 99998 — alors que le commentaire affirmait « chaque tenant a SON
golden template ». Faux depuis longtemps, et invisible en lisant un seul fichier.
Renomme sur le cluster et dans les trois instances. Le gabarit est un artefact du
MOTEUR, pas d'un tenant ; le nom d'un tenant sur le gabarit d'un autre etait un
piege qui n'attendait qu'un troisieme hebergeur. model_creer.py et
config_proxmox.py proposaient encore modele-debian13 : alignes.
Sans risque : le clonage se fait par VMID depuis le 2026-08-10, le nom ne sert
plus qu'a l'affichage.
NOUVELLE PORTE dans l'aiguillage : docs/preparer-un-site-hebergeur.md, pour
quelqu'un qui prete son materiel sans rien connaitre de Set-OPS. Ecrit a partir
du depot — VLAN et MTU d'underlay.yml, bloc par tenant de
inventory_rules.supernet_de(), privileges du jeton de config-proxmox.md,
dimensionnement (~460 Go, ~37 Go de RAM) mesure sur la flotte vivante.
Deux avertissements y figurent parce qu'ils ont deja coute cher ici : un gabarit
personnalise recopie son identite dans chaque clone, et un blocage contourne en
silence se paie en heures.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 14:36:44 -04:00
|
|
|
|
|
|
|
|
**Et deux paires de secrets**, par un canal chiffré et séparément du reste : le Token ID +
|
|
|
|
|
secret de l'hyperviseur, la clé + secret de l'API de la frontière. Ils n'entrent **jamais**
|
|
|
|
|
dans un dépôt git : leur place est la voûte chiffrée de l'instance.
|
|
|
|
|
|
|
|
|
|
### Les accès réseau nécessaires
|
|
|
|
|
|
|
|
|
|
| Cible | Port | Pour quoi |
|
|
|
|
|
|---|---|---|
|
|
|
|
|
| Hyperviseur | 8006 | créer et détruire les VM |
|
|
|
|
|
| Frontière | 443 | poser les règles par API |
|
|
|
|
|
| Frontière | 22 | SSH, compte `ansible` |
|
|
|
|
|
| Réseau du tenant | 22 | SSH vers les VM une fois créées |
|
|
|
|
|
|
|
|
|
|
Les VM ont besoin de sortir sur Internet pour leurs paquets système. Le reste — les
|
|
|
|
|
artefacts applicatifs — est **poussé depuis le poste de l'exploitant**, pas téléchargé par
|
|
|
|
|
les machines.
|
|
|
|
|
|
2026-08-12 15:34:25 -04:00
|
|
|
## 8. Relier deux sites (exploitation à distance, reprise après sinistre)
|
|
|
|
|
|
|
|
|
|
Deux besoins bien distincts, qu'il ne faut pas confondre :
|
|
|
|
|
|
|
|
|
|
**Les services publiés n'ont besoin de rien.** Nuage, forge, courriel, SSO sortent par la
|
|
|
|
|
frontière en TLS, derrière l'authentification unique. Aucun tunnel n'est requis pour les
|
|
|
|
|
utiliser, et en ajouter un n'apporterait rien.
|
|
|
|
|
|
|
|
|
|
**Le plan de contrôle, si.** L'inventaire adresse les machines par leurs IP privées
|
|
|
|
|
**dérivées** ; il n'existe aucun chemin publié vers elles, et il ne peut pas y en avoir
|
|
|
|
|
sans casser la dérivation. Les API de l'hyperviseur et de la frontière, elles, tournent
|
|
|
|
|
avec la **vérification du certificat désactivée** — les exposer publiquement reviendrait à
|
|
|
|
|
publier les deux surfaces les plus privilégiées sans savoir à qui l'on parle.
|
|
|
|
|
|
|
|
|
|
| Besoin | Forme adaptée |
|
|
|
|
|
|---|---|
|
|
|
|
|
| Déployer et exploiter à distance, ponctuellement | accès **nomade** (poste → site) : une clé, révocable, aucun couplage entre sites |
|
|
|
|
|
| **Réplication de sauvegardes, reprise mutuelle** | lien **site-à-site** : il doit tenir sans qu'aucun poste soit allumé |
|
|
|
|
|
|
|
|
|
|
Dans les deux cas, la politique doit être explicite : un lien qui joint simplement deux
|
|
|
|
|
réseaux **défait en silence l'isolation inter-tenant**. WireGuard s'y prête bien — ses
|
|
|
|
|
`allowed-ips` *sont* la politique : ce qui n'y figure pas ne traverse pas.
|
|
|
|
|
|
|
|
|
|
> **Ce que la reprise mutuelle exige en plus** : des plages de gestion distinctes (§2), de
|
|
|
|
|
> la capacité chez le survivant pour faire tourner **les deux** écosystèmes, un gabarit
|
|
|
|
|
> présent **des deux côtés**, et la voûte de chaque instance conservée hors de son propre
|
|
|
|
|
> site. Les sauvegardes, elles, sont chiffrées **côté client** : le site d'accueil héberge
|
|
|
|
|
> du chiffré qu'il ne peut pas lire. La confiance demandée porte sur la **disponibilité**,
|
|
|
|
|
> pas sur la confidentialité.
|
|
|
|
|
|
|
|
|
|
## 9. Ce qu'il ne faut pas faire
|
gabarit : modeleChezlepro -> modeleSetOPS, et une porte pour l'hebergeur
Le gabarit portait le nom du mauvais proprietaire. Les TROIS instances
(Chezlepro, Technolibre, lab) le declaraient et pointaient deja toutes sur le
MEME VMID 99998 — alors que le commentaire affirmait « chaque tenant a SON
golden template ». Faux depuis longtemps, et invisible en lisant un seul fichier.
Renomme sur le cluster et dans les trois instances. Le gabarit est un artefact du
MOTEUR, pas d'un tenant ; le nom d'un tenant sur le gabarit d'un autre etait un
piege qui n'attendait qu'un troisieme hebergeur. model_creer.py et
config_proxmox.py proposaient encore modele-debian13 : alignes.
Sans risque : le clonage se fait par VMID depuis le 2026-08-10, le nom ne sert
plus qu'a l'affichage.
NOUVELLE PORTE dans l'aiguillage : docs/preparer-un-site-hebergeur.md, pour
quelqu'un qui prete son materiel sans rien connaitre de Set-OPS. Ecrit a partir
du depot — VLAN et MTU d'underlay.yml, bloc par tenant de
inventory_rules.supernet_de(), privileges du jeton de config-proxmox.md,
dimensionnement (~460 Go, ~37 Go de RAM) mesure sur la flotte vivante.
Deux avertissements y figurent parce qu'ils ont deja coute cher ici : un gabarit
personnalise recopie son identite dans chaque clone, et un blocage contourne en
silence se paie en heures.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 14:36:44 -04:00
|
|
|
|
|
|
|
|
- **Ne pas créer de VM à la main** pour le tenant. Elles sont toutes dérivées du plan ;
|
|
|
|
|
une VM créée à côté est invisible pour l'outil, qui la détruira sans le savoir.
|
|
|
|
|
- **Ne pas configurer le SDN** : l'outil le fait entièrement.
|
|
|
|
|
- **Ne pas écrire les secrets** dans un fichier partagé ni dans un dépôt git.
|
|
|
|
|
- **Ne pas contourner un blocage en silence.** Un point resté ouvert et *signalé* se règle
|
|
|
|
|
en dix minutes ; un contournement non dit se paie en heures, parce que la panne sera
|
|
|
|
|
cherchée au mauvais endroit.
|
|
|
|
|
|
|
|
|
|
## Voir aussi
|
|
|
|
|
|
|
|
|
|
- [`sdn-evpn.md`](sdn-evpn.md) — pourquoi une zone EVPN par tenant.
|
|
|
|
|
- [`config-proxmox.md`](config-proxmox.md) — les intrants côté hyperviseur, et le token.
|
|
|
|
|
- [`frontiere-opnsense.md`](frontiere-opnsense.md) — la frontière, hors flotte Ansible.
|
|
|
|
|
- [`procedure-template-debian13-proxmox.md`](procedure-template-debian13-proxmox.md) — fabriquer `modeleSetOPS`.
|