3.3 KiB
Créer plusieurs VM avec ce dépôt
Une VM = un fichier vms/<nom>.tfvars + un espace de travail Terraform du même nom.
Chaque VM a donc son propre état : en détruire une ne touche pas aux autres, et un
plan raté sur l'une n'a aucun effet sur l'autre.
vms/
├── centreon.tfvars VM 120, Debian 12, 10.0.5.20
└── exemple-debian13.tfvars VM 121, Debian 13, 10.0.5.21
Dans le bucket S3, les états se rangent sous env:/<nom>/backend/…, automatiquement.
Ajouter une VM
Copier un fichier existant, le renommer, puis adapter. Trois valeurs doivent être
uniques sur l'infrastructure, et rien ne le vérifie — deux VM avec le même vm_id
provoquent un échec à la création, deux avec la même IP un conflit silencieux :
vm_idvm_hostnamevm_ipv4_address
Un git push déclenche le plan de toutes les VM déclarées : c'est le filet qui
attrape une erreur de syntaxe ou un fichier de clé manquant avant tout déploiement.
Pour créer la VM, lancer deploy en saisissant son nom dans le champ vm. Le workflow
refuse un nom sans fichier correspondant et liste les VM connues.
Changer de version de Debian
Deux lignes, dans le fichier de la VM concernée :
debian_image_url = "https://cloud.debian.org/images/cloud/trixie/latest/debian-13-genericcloud-amd64.qcow2"
debian_image_file_name = "debian-13-genericcloud-amd64.qcow2"
Le reste du code n'en dépend pas : comptes, durcissement SSH, nftables, agent invité et
mises à jour automatiques sont identiques d'une version à l'autre. Le nom du fichier
doit garder une extension .qcow2, .raw ou .vmdk, seules acceptées par le contenu
import de Proxmox.
Une limite à connaître : Centreon 25.10 n'existe que pour Debian 12. Le dépôt
ansible-centreon refuse d'ailleurs de s'exécuter sur autre chose. Une VM Debian 13
convient pour tout le reste.
Migration de l'existant
La VM centreon a été créée avant ce découpage, son état vit donc dans l'espace
default. Le workflow migrer-espaces le recopie une fois pour toutes dans l'espace
centreon, sans rien détruire : confirmation MIGRER, puis il vérifie qu'aucune
modification n'est proposée ensuite.
À lancer avant tout autre workflow. Sans cette migration, un deploy sur la VM
centreon la verrait comme inexistante et tenterait de la recréer — avec un VMID déjà
pris, donc un échec, mais autant l'éviter.
L'espace default conservera une copie de l'état après migration. Terraform interdit de
le supprimer, et plus aucun workflow ne l'utilise : il devient inerte.
Commandes hors CI
Pour un essai ponctuel, par conteneur :
docker run --rm -it -v "$PWD":/work -w /work \
-e TF_VAR_pve_api_token -e TF_VAR_pve_ssh_password \
-e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY \
hashicorp/terraform:latest workspace list
workspace list montre les espaces existants, workspace select <nom> bascule, et
chaque commande doit ensuite recevoir -var-file=vms/<nom>.tfvars. Se tromper de
couple espace/fichier est la seule vraie façon de se faire mal ici : Terraform
comparerait l'état d'une VM à la définition d'une autre et proposerait de tout recréer.
C'est la raison pour laquelle les workflows sélectionnent toujours les deux ensemble, à
partir du même nom.