Mon optimisation d'hier soir a mis le cluster a genoux, et la faute est entiere. En remplacant proxmox_kvm par un appel d'API direct, j'ai perdu ce que le module faisait pour moi : attendre la fin de la tache (timeout: 600). `POST .../clone` rend un UPID et la main immediatement ; Proxmox copie le disque en tache de fond. En sequentiel ca ne se voyait pas — l'attente de SSH absorbait le delai. En PARALLELE, `make creer-vm` rendait la main pendant la copie : la limite de concurrence ne retenait plus que des PROCESSUS VIDES et les clones s'empilaient. Mesure : limite a 4, QUATORZE copies integrales simultanees. Le symptome trompait — CPU de l'hyperviseur a 2 %, RAM a 13/62, et tout ramait. Ce n'etait pas la machine, c'etait TrueNAS. Les 14 hotes ont echoue, et flotte-creer a refuse de continuer : la garde ajoutee le matin meme a fait son travail. Le clonage relit desormais l'UPID et interroge l'etat de la tache jusqu'a `stopped`, avec un message clair si la sortie n'est pas OK. La limite de concurrence retrouve un sens : quatre clones REELS, pas quatre coquilles. NOTE, PAS ENCORE CORRIGE : `raser` a le meme defaut dans l'autre sens. Il a rapporte « 6/6 VM detruites » alors que les six etaient la — l'API accepte le DELETE, rend un UPID, et la tache echoue ensuite sur « VM is locked (clone) ». raser ne lit que la reponse immediate, jamais le resultat. MESURE DES OPTIMISATIONS, reconstruction complete avec gabarit sur CephNVMe (proposition de l'exploitant) et concurrence a 3 : 54 min 02 s contre 1 h 12 min 48 s — 26 % de moins, zero echec, 2838 taches. Le cache d'artefacts est le plus rentable : Nextcloud 10m55s -> 4m14s, Forgejo 3m42s -> 1m33s, verifie par les `skipping` du journal. J'avais annonce un gain « limite a la part telechargement » — cette part etait bien plus grosse que je ne le croyais. forks=20 : les couches larges 3m09s -> 1m37s. Gabarit NVMe + 3 clones : 1m35s -> 1m17s par VM, le plus modeste, car les disques ECRIVENT toujours sur TrueNAS. Verifie : 3 clones actifs jamais plus, 7 devis CONFORME, ansible-lint production, prouver.py 35 OK. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| cloner_vm_debian.yml | ||
| README.md | ||
| supprimer_vm_debian.yml | ||
Playbooks Proxmox
Ces playbooks pilotent Proxmox par API depuis le poste Ansible.
Les valeurs Cloud-Init communes déjà définies sur le modèle Proxmox sont héritées par les clones. Set-OPS ne les redemande pas.
Prérequis du poste Ansible
Le clonage Proxmox utilise les modules community.general.proxmox_*.
Le poste Ansible doit donc avoir :
- la collection Ansible
community.general; - la bibliothèque Python
proxmoxerdisponible dans le Python utilisé par Ansible.
Sur Debian, installer généralement :
sudo apt install python3-proxmoxer
Vérification locale :
python3 -c 'import proxmoxer'
Les paramètres non sensibles sont dans :
instance/inventories/production/group_vars/proxmox.yml
Assistant terminal (écrit proxmox.yml et place le token dans la voûte unifiée) :
make config
Les secrets d'API vivent dans la voûte unifiée de l'instance — le token Proxmox aux
côtés des autres vault_*, un seul fichier chiffré, non versionné :
instance/inventories/production/group_vars/all/vault.yml
make config la sème depuis le gabarit et y place le token. Le clonage lit cette voûte
unifiée (une proxmox.vault.yml séparée reste acceptée en compatibilité). Détail des
paramètres : docs/config-proxmox.md.
Créer un clone Debian depuis le modèle :
make creer-vm \
HOTE=web-frontal-01 \
VMID=95301 \
VLAN=15 \
ADRESSE_IP=10.0.15.31 \
PASSERELLE=10.0.15.1 \
GROUPES="serveur_debian serveur_durci"
VLAN doit être saisi à chaque création de VM pour éviter de réutiliser par erreur un réseau d'un autre clone.
Le disque du clone hérite de la taille du modèle. Pour l'agrandir à la création, fournir explicitement une taille supérieure à celle du modèle :
make creer-vm HOTE=web-frontal-01 VMID=95301 VLAN=15 ADRESSE_IP=10.0.15.31 PASSERELLE=10.0.15.1 TAILLE_DISQUE=64G GROUPES="serveur_debian serveur_durci"
Proxmox ne permet pas de réduire un disque existant.
creer-vm clone la VM, applique les paramètres Cloud-Init et ajoute l'hôte à l'inventaire. La conformité Ansible reste séparée :
make deployer HOTE=web-frontal-01