SITE-TechnoLibre/COLLECTE.md
Daniel Allaire f9d14e6447 voute du site : dix secrets engendres, quatre a relever, et la porte fermee avant
Le site n avait ni voute ni cle. C etait le seul blocage TOTAL avant la visite — et
le seul qui ne demandait aucun Internet : sans elle, `make site-appliquer` ne passe
aucun secret et chaque role echoue sur son assertion.

Quatorze secrets, comme le site de Chezlepro :
- dix engendres sur le poste (autorite de certification et son provisionneur, cle et
  jeton interne de la forge, ses comptes d administration, base et jeton d API de la
  supervision, phrase du depot de sauvegarde) ;
- une paire ed25519 pour la sauvegarde — la moitie PRIVEE en voute, la PUBLIQUE au
  plan, ou elle est publiable sans risque et ou elle est la seule a pouvoir servir ;
- quatre laisses VIDES, parce qu ils ne s engendrent pas : ce sont des jetons que le
  materiel delivre. Vides plutot qu absents, deliberement — une cle absente donne une
  erreur de variable indefinie, une cle vide donne l assertion du role, qui dit QUOI
  manque et OU le prendre.

.gitignore ALIGNE SUR CHEZLEPRO, ET AVANT DE POSER LA VOUTE. Ce depot n excluait que
`*.vault.yml.bak` : `underlay.vault.yml` aurait ete versionnable. Le defaut etait
dormant parce que le fichier n existait pas encore — il se serait reveille au premier
`git add -A`, c est-a-dire au moment ou l on cesse de regarder. On ferme la porte
avant de poser ce qu elle protege.

Verifie : la voute se relit par le chemin NORMAL (la liste d identites, pas la cle
directe), quatorze secrets, aucun manquant, et la cle privee de sauvegarde est bien
une cle. Le chiffrement a ete fait avec ses deux flux rediriges vers des fichiers —
`ansible-vault` echoue en SILENCE sur une sortie non bloquante, et la voute paraitrait
ecrite en etant identique a l octet.

COLLECTE.md compte desormais dix-sept valeurs a relever, dont les quatre jetons.

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

7.3 KiB
Raw Blame History

À relever sur place — TechnoLibre

Tout ce qui pouvait être décidé l'a été le 2026-09-13. Ce qui suit n'est pas un choix : ce sont des FAITS que seul le matériel peut dire. Treize valeurs, pas trente-cinq.

Ce qu'il faut Où le lire Pourquoi personne ne peut le décider
<<IFACE>> ip -br link sur le nœud Le nom de la carte réseau dépend du matériel (eno1, enp1s0…)
<<IP_PUBLIQUE>> OPNsense, interface WAN Donnée par le fournisseur d'accès
<<IP_FRONTIERE_ADMIN>> OPNsense, interface de gestion Dépend du plan d'adressage existant sur place
<<optN>> ×9 OPNsense → Interfaces → Assignments Les noms optN sont attribués dans l'ordre de création
`<<lan optN>>` Idem
proxmox_api_token_id Datacenter → Permissions → API Tokens Délivré par le nœud à la création
proxmox_api_token_secret Idem — affiché une seule fois Ne se relit jamais ; le noter tout de suite
vault_opnsense_api_key System → Access → Users → api keys Délivré par la frontière
vault_opnsense_api_secret Téléchargé avec la clé, même fichier Idem

Le piège des optN. Le devis raisonne en ARRIVÉE : une règle posée sur la mauvaise patte ne correspond jamais, et rien ne le signale. Relever les neuf noms exacts avant de poser quoi que ce soit, y compris celui de la patte face au nœud Proxmox — elle manquait chez Chezlepro et toutes les règles entrantes des locataires tombaient dans le vide.

Ce qui est mesuré, pas relevé. local-lvm accueille quinze clones complets, soit environ 600 Go. Vérifier vgs et df -h AVANT de lancer la matérialisation : c'est la seule décision de ce document qui peut encore changer, et elle se prend avec un chiffre.

Les quatre jetons vont dans la voûte, pas dans un fichier de plan :

cd ../Set-OPS-public
ANSIBLE_VAULT_IDENTITY_LIST="$(python3 scripts/voutes.py identites)" \
  ansible-vault edit ../SITE-Technolibre/underlay.vault.yml

Ils y sont déjà déclarés, vides. C'est volontaire : une clé absente donne une erreur de variable indéfinie, une clé vide donne l'assertion du rôle — qui dit quoi manque et où le prendre. Les dix autres secrets du site sont déjà engendrés.


Ce qui a été décidé, et qu'il suffit de confirmer

Valeur Raison
Index du site 31 Les sites prennent leur propre index depuis le 2026-09-12
Nœud Proxmox atelier À poser comme nom d'hôte à l'installation
Frontière portail Étiquette dans la carte ; l'OPNsense peut garder son nom réel
Domaine du site socle.internal Distinct de technolibre.internal, qui est au locataire
Routage des locataires sdn (EVPN sur le nœud) Sans commutateur L3, le mode switch obligerait la frontière à porter douze interfaces routées
ASN 65031 Dérivé de l'index — deux sites reliés ne peuvent pas collisionner
Contrôleur EVPN EVPN0031 Objet de cluster : nommé d'après le site, pas d'après son premier locataire
Pont vmbr0 Un seul, VLAN-aware — sans seconde carte, d'autres ponts ne sépareraient rien
Gabarit 99998 Le même dans toute la flotte

1. Le chiffre qui décide de tout

SITE      7 VM    20 Go RAM    776 Go provisionnés
tenant   14 VM    37 Go RAM    460 Go provisionnés
         ─────────────────────────────────────────
TOTAL    21 VM    57 Go RAM    ~1,2 To

Sur trois nœuds ça se répartit. Sur un seul, la même machine porte tout — et la RAM est la contrainte dure (le disque se dégonfle en provisionnement fin, pas la mémoire).

  • RAM physique du nœud : ______ Go → si < 64, décider de réduire AVANT de câbler
  • Espace libre du stockage images : ______ Go (viser 1,2 To ; 800 Go à la rigueur)

2. L'hyperviseur

  • Nom exact du nœud tel qu'il apparaît dans l'interface : ______
  • Version : pveversion | head -1 → ______ (attendu : pve-manager/9.x)
  • Noms exacts des stockages acceptant le contenu images : pvesm status
  • Ponts présents : ip -br link | grep vmbr
  • Adresse de gestion du nœud : ______
  • SDN disponible ? pvesh get /cluster/sdn répond sans erreur : oui / non

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
  • Token ID + secret notés (le secret ne s'affiche qu'une fois)

3. La frontière (OPNsense)

  • IP publique (WAN) : ______
  • Version : ______
  • Interfaces libres pour les zones du site : ______
  • Clé + secret d'API créés et notés
  • Compte ansible en SSH par clé, sudo vérifié : sudo -n -l
  • Une patte face au nœud Proxmox (le lien de transit) : interface ______

4. Entre les deux — LA question de forme

Ce qu'il y a entre le nœud Proxmox et l'OPNsense décide du mode de routage :

  • Un commutateur capable de SVI et d'ACL → mode switch, modèle : ______
  • Un commutateur simple (VLAN seulement) → l'OPNsense route tout, mode switch avec l'OPNsense comme routeur
  • Un lien direct nœud ↔ OPNsense → trunk 802.1Q, l'OPNsense route tout
  • SDN EVPN sur le nœud → indépendant du matériel, mais jamais éprouvé sur un nœud unique

5. Cohabitation d'adressage

  • ip route sur le poste de Mathieu — quelles plages 10.x sont déjà prises ?
  • Son réseau bureautique / son VPN utilisent-ils 10.31.x ou 10.23.x ? ______
  • Docker présent sur ses machines d'administration ? (172.17+ déjà pris)

6. Le gabarit

  • Gabarit Debian 13 modeleSetOPS-minimal : fait / à faire (procédure : docs/procedure-template-debian13-proxmox.md, ~30 min)
  • Si fait : VMID ______ , nom ______ , stockage ______
  • Vérifier machine: q35 et bios: ovmf — ne jamais convertir un i440fx

7. Les accès réseau nécessaires depuis le poste

Cible Port Pour quoi OK
Hyperviseur 8006 créer et détruire les VM [ ]
Hyperviseur 22 pvesh, qm, SDN [ ]
Frontière 443 poser les règles par API [ ]
Frontière 22 SSH, compte ansible [ ]
Zones du site 22 SSH vers les VM une fois créées [ ]

8. Les deux paires de secrets

Par un canal chiffré, séparément du reste, et jamais dans git :

  • Token ID + secret de l'hyperviseur → voûte de l'instance
  • Clé + secret de l'API de la frontière → voûte de l'instance

9. Ce qui n'a jamais été éprouvé, et qu'il faut regarder de près

  • Proxmox 9 — le moteur n'analyse aucune version et n'appelle que des chemins d'API stables, mais rien n'a jamais tourné contre un PVE 9. Surveiller le pare-feu (proxmox-firewall nftables en 9) et le SDN (passé GA).
  • Nœud unique — pas de Ceph, pas de migration, le gabarit et les clones sont sur la même machine. Le SPOF est total et assumé.
  • Index 31 — celui du SITE. Vérifier qu'aucune plage 10.31.x n'existe déjà chez Mathieu (ip route | grep 10.31). make instances garde la fédération.