SITE-TechnoLibre/PREMIERE-HEURE.md
Daniel Allaire 2e223f135a Le site de reprise refait sur le modele de SITE-Chezlepro, et sa face publique par relais
- Carte au schema actuel (index 31, zones derivees, publication VLAN 37), equipements reels :
  frontiere requin, noeud maurice, commutateur caillou.
- Neuf machines, memes noms et VMID qu'au site de Chezlepro ; runner des deux locataires.
- maurice : vmbr0 administration (nic0), vmbr1 VLAN-aware pour les VM (nic2) ; stockages nvme
  et miroir (ZFS 2 x 12 To, site-backup-01).
- opnsense.yml : optN mesures (opt1 transit, opt2..opt8 zones, opt9 RELAIS) ; face publique par
  le relais (opt9, RELAIS_GW), adresse du site et pool des locataires ; silence du relais.
- underlay.yml : reseau `relais` (tunnel WireGuard 10.31.60.0/30), hote relais (VPS OVH) et
  cles publiques des deux bouts.
- plan/domaines.yml et plan/mainteneurs.yml ; documentation (README, PREMIERE-HEURE,
  COLLECTE) a jour du releve sur place.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 21:20:04 -04:00

8.5 KiB
Raw Blame History

La première heure — adresses et comptes

Pour qui : l'exploitant, devant le matériel de TechnoLibre, avant tout déploiement.

Proxmox et OPNsense sont déjà installés. Ce document ne fait qu'une chose : leur donner les bonnes adresses et les comptes dont Set-OPS a besoin pour agir. Rien n'est déployé ici ; on rend seulement les deux machines joignables et pilotables.

L'ordre n'est pas indifférent. La frontière porte la passerelle de chaque zone : si elle n'est pas posée, le nœud aura des adresses qui ne mènent nulle part, et le diagnostic parlera de réseau alors qu'il s'agira d'une patte manquante.


0 · Se poser sur son réseau d'administration

Le poste est branché sur caillou, carte filaire en 10.31.0.101/24 — c'est de là que tout se fait. De cette adresse on atteint la frontière (.1), le nœud (.11) et, plus tard, le rebond vers les machines du site.

À relever avant : l'adresse actuelle des deux machines, pour pouvoir y revenir si une manœuvre coupe l'accès.


1 · La frontière — requin

1.1 Les neuf pattes

Une par zone, plus le plan d'administration et le transit. Le dernier octet est toujours .1 : c'est l'invariant dont le devis dérive les règles.

Interface VLAN Adresse Ce qu'elle sert
administration — 10.31.0.1/24 le poste de l'exploitant, le rebond
transit 40 10.0.4.1/24 la sortie des locataires
pilotage 31 10.31.31.1/24 le runner du site
autorité 32 10.31.32.1/24 l'autorité de certification
génome 33 10.31.33.1/24 la forge et le cache
service 34 10.31.34.1/24 les noms
sauvegarde 35 10.31.35.1/24 le dépôt
supervision 36 10.31.36.1/24 le témoin
publication 37 10.31.37.1/24 l'edge et le DNS public du site

Le câblage du 2026-10-13 : deux ports, deux rôles.

  • igc0 (LAN, 2,5G) : l'administration seule, 10.31.0.1/24, branchée sur caillou (VLAN 1 non étiqueté). Aucun VLAN de zone n'y est posé.
  • ix0 (SFP+ 10G, non assigné) : branché sur un SFP+ de caillou, comme nic2 de maurice (vmbr1) — le chemin des zones est ix0 → caillou → nic2. Les pattes des zones sont des interfaces VLAN posées sur ix0 : vlan031 à vlan037, et vlan040 pour le transit (OPNsense impose le préfixe vlan0). caillou porte aussi le VLAN 40. Assignées le 2026-10-13 : opt1 = vlan040, opt2 à opt8 = vlan031 à vlan037 ; ix0 lui-même n'est plus assigné. Non étiqueté, ix0 est dans le VLAN 1 de caillou, celui de l'administration : il ne reçoit pas d'adresse.

caillou est déjà réglé : on n'y touche pas.

1.2 Relever les noms d'interface — le piège du jour

Dans Interfaces → Assignments, noter le nom optN attribué à chacune des neuf, transit compris.

Le devis raisonne en arrivée : une règle posée sur la mauvaise patte ne correspond jamais, et rien ne le signale. Ces dix noms vont dans opnsense.yml, et ils doivent être exacts.

1.3 Le compte d'API

System → Access → Users → nouvel utilisateur ansible, puis api keys → créer. Le fichier téléchargé contient la clé et le secret.

Ils vont dans la voûte, jamais 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

→ vault_opnsense_api_key et vault_opnsense_api_secret, déjà déclarés vides.

1.4 L'accès SSH

Le rebond vers les machines du site passe par la frontière, et frontiere_pki.py y lit config.xml par sudo. Dans System → Access → Users, l'utilisateur ansible (le même que celui de l'API) reçoit :

  • Login shell : /bin/sh ;
  • Group membership : admins ;
  • Authorized keys : cette clé publique :
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICf8ecGQ555LuTDaFaqzc3SG+wy0Y8ECqmsIRxemc0dM Cle ansible pour le royaume technolibre

Puis, dans System → Settings → Administration :

  • Secure Shell : activé, sur l'interface LAN seulement ; connexion root refusée, mot de passe refusé (clé seulement) ;
  • Sudo : No password, pour le groupe admins.

Vérifier ensuite, depuis le poste :

ssh ansible@10.31.0.1 'echo ok; sudo -n true && echo "sudo ok"'

2 · Le nœud — maurice

2.1 Le nom d'hôte

maurice (posé à l'installation) — c'est ce que le plan déclare, et l'API l'utilise comme identifiant dans ses chemins. Un autre nom oblige à corriger proxmox-hebergeur.yml.

2.2 Les adresses

Deux ponts, une carte chacun :

Pont Carte Rôle Adresse
vmbr0 nic0 (1G) administration seule 10.31.0.11/24 — passerelle 10.31.0.1
vmbr1 nic2 (10G) les VLAN des VM (31 à 37) aucune

Sur vmbr1, plus tard : le transit (VLAN 40, 10.0.4.11/24) et le transport VXLAN (VLAN 50, 10.31.50.11/24).

vmbr1 doit être VLAN aware : sans cela les VLAN des zones ne traverseront pas, et les VM naîtront sur un réseau muet.

2.3 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 secret n'est affiché qu'une fois. Il va dans la voûte, sous proxmox_api_token_id et proxmox_api_token_secret.

Sur Administrator, autant le dire franchement. Le minimum 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.

2.4 Le compte ansible du nœud

L'API ne fait pas tout : le SDN, le pare-feu du nœud et ses métriques se posent par SSH. Même compte qu'au site de Chezlepro — ansible, par clé, sudo sans mot de passe :

apt install -y sudo
useradd -m -s /bin/bash ansible
install -d -m 700 -o ansible -g ansible /home/ansible/.ssh
echo 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICf8ecGQ555LuTDaFaqzc3SG+wy0Y8ECqmsIRxemc0dM Cle ansible pour le royaume technolibre' \
  > /home/ansible/.ssh/authorized_keys
chown ansible:ansible /home/ansible/.ssh/authorized_keys
chmod 600 /home/ansible/.ssh/authorized_keys
echo 'ansible ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/ansible
chmod 440 /etc/sudoers.d/ansible
visudo -cf /etc/sudoers.d/ansible

Vérifier depuis le poste :

ssh -i ~/.ssh/id_ed25519_ansible_technolibre ansible@10.31.0.11 'hostname; sudo -n true && echo "sudo ok"'

Attendu : maurice, puis sudo ok.

2.5 Le gabarit doré

Depuis la clé USB, dossier gabarits/ :

qmrestore vzdump-qemu-9006-*.vma.zst 9006 --storage nvme
qm template 9006
qm config 9006 | grep -E '^(name|machine|bios|template)'

Attendu : name=modeleSetOPS-minimal, machine=q35, bios=ovmf, template=1.

--storage est obligatoire : le disque vient d'un Ceph qui n'existe pas ici. Et qm template est ce qui rend la VM clonable — sans lui, le clonage refusera.

2.6 Mesurer avant de matérialiser

vgs ; df -h

Les neuf machines du site demandent 816 Go en clones complets : 416 Go sur nvme, et les 400 Go de site-backup-01 sur miroir. Chaque locataire repris demande environ 460 Go de plus — il ne tiendra pas sur le NVMe, et devra aller sur miroir.


3 · Renseigner ce qu'on a relevé

Dans opnsense.yml — les dix noms d'interface et les deux adresses de la frontière. Dans la voûte — les quatre jetons.

Puis, depuis Set-OPS-public avec le lien underlay.yml pointant sur ce site :

make site-intrants          # ce que le site exposera à ses locataires
python3 scripts/devis_reseau.py    # ce qu'il faut poser sur le commutateur
python3 scripts/devis_sdn.py --verifier

Ce qui est déjà décidé, et qu'il suffit de confirmer

Index du site 31
Domaine socle.internal
Routage des locataires sdn — EVPN sur le nœud, ASN 65031, contrôleur EVPN0031
Ponts vmbr0 (administration, nic0) ; vmbr1 (VM, nic2), VLAN-aware
Stockage nvme (LVM-thin, NVMe 465 Go) pour les VM ; miroir (ZFS, 2 × 12 To) pour site-backup-01
Gabarit 9006 — 99998 est son précédent, jamais cloné

Quatorze des dix-huit secrets du site sont déjà engendrés. Les quatre restants sont les jetons ci-dessus.