# 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.