Objectif :
Utiliser Terraform, un outil d’Infrastructure as Code (IaC), pour décrire et déployer des ressources Proxmox VE (VM, réseaux, stockage) de façon déclarative et reproductible. Ce scénario intéresse les équipes DevOps cherchant à unifier les processus de déploiement et de gestion de l’infrastructure.
Pré-requis :
- Un cluster Proxmox (facultatif, un nœud unique peut suffire).
- Accès SSH au nœud pour installer Terraform et le Provider Proxmox.
- Terraform installé sur votre machine cliente (Linux, macOS, ou Windows).
- Un API token ou le mot de passe root pour interagir avec l’API Proxmox (préférez un token avec permissions limitées).
Actions à réaliser :
Préparation du provider Proxmox pour Terraform :
- Sur votre machine cliente, installez Terraform depuis le site officiel.
- Dans votre répertoire de travail Terraform, créez un fichier
main.tf
. - Ajoutez le provider Proxmox (généralement
provider "proxmox" { ... }
) en suivant les instructions du provider officiel ou communautaire (https://registry.terraform.io/providers/Telmate/proxmox). - Renseignez vos identifiants (URL du Proxmox, username@pam, mot de passe ou token) dans un bloc
proxmox
.
Définition de ressources via Terraform :
Dans
main.tf
, créez une ressource pour une VM, par exemple :
resource "proxmox_vm_qemu" "demo_vm" {
name = "tf-demo-vm"
target_node = "pve"
pool = "mypool"
# Configuration VM
clone = "template-ubuntu20" # Si vous avez un template existant
cores = 2
sockets = 1
memory = 2048
disk {
size = "20G"
storage = "local-lvm"
}
network {
bridge = "vmbr0"
}
}
Si vous n’avez pas de template, vous pouvez définir l’installation à partir d’une ISO ou simplement cloner une VM existante, en ajustant les paramètres selon la documentation du provider.
Initialisation et planification :
- Dans votre terminal, placez-vous dans le répertoire contenant
main.tf
. - Lancez
terraform init
pour initialiser le projet, télécharger les plugins, etc. - Faites
terraform plan
pour voir le plan d’application, vérifier que Terraform peut se connecter à Proxmox et voir les modifications prévues (création de la VM).
- Dans votre terminal, placez-vous dans le répertoire contenant
Application de la configuration :
- Lancez
terraform apply
et confirmez. Terraform crée la VM sur Proxmox selon la définition dansmain.tf
. - Consultez l’interface Proxmox. Vous verrez la VM nouvellement créée, conforme à la configuration Terraform.
- Modifiez des paramètres (RAM, CPU, nom) dans
main.tf
puis refaites unterraform apply
pour voir Terraform mettre à jour la VM. Terraform assure un état cohérent entre ce qui est décrit dans le code et l’infrastructure réelle.
- Lancez
Gestion du cycle de vie et cohérence :
- Ajoutez une seconde ressource VM, un réseau supplémentaire, ou un pool.
- Générez des variables (fichier
variables.tf
) pour paramétrer dynamiquement la taille du disque, le nombre de VMs, etc. - Testez la destruction :
terraform destroy
supprime les ressources créées, assurant un cycle complet (création, modification, suppression) géré par IaC.
Bonnes pratiques et intégration CI/CD :
- Stockez vos fichiers Terraform dans un dépôt Git.
- Utilisez un pipeline CI/CD (Jenkins, GitLab CI, GitHub Actions) pour valider les modifications avant déploiement.
- Combinez Terraform avec Ansible pour configurer automatiquement l’OS invité après création de la VM.
Résultat attendu :
Vous avez intégré Proxmox VE dans un flux DevOps, en décrivant votre infrastructure (VM, stockage, réseaux) dans du code Terraform et en laissant Terraform orchestrer les créations, mises à jour et destructions de ressources. Ceci rend votre infrastructure reproductible, traçable, et fait évoluer Proxmox VE vers une gestion plus moderne et automatisée, où chaque changement est versionné et appliqué de manière contrôlée.