Comment automatiser facilement les machines virtuelles Proxmox à l'aide de Terraform ?

La gestion de nombreuses machines virtuelles peut être lente et sujette aux erreurs. Avec Terraform et Proxmox, vous utilisez du code pour contrôler vos machines virtuelles. Cet article montre étape par étape comment configurer l'automatisation et rationaliser votre flux de travail.

download-icon
Téléchargement gratuit
pour VM, OS, base de données, fichiers, NAS, etc.
pierre

Updated by Pierre on 2026/01/08

Table des matières
  • Qu'est-ce que Terraform ?

  • Qu'est-ce que Proxmox ?

  • Pourquoi utiliser Terraform avec Proxmox ?

  • Méthode 1 : Comment configurer Terraform pour Proxmox

  • Méthode 2 : Approvisionnement de machines virtuelles avec le fournisseur Terraform Proxmox

  • Sauvegarder les machines virtuelles Proxmox avec Vinchin Backup & Recovery

  • Utilisation de Terraform avec Proxmox : FAQ

  • Conclusion

La gestion des machines virtuelles peut être fastidieuse lorsque vous devez en déployer ou mettre à jour plusieurs simultanément. Ne serait-il pas plus simple d'automatiser ces tâches ? C'est précisément ici que Terraform et Proxmox entrent en jeu. Grâce à eux, vous gérez votre infrastructure sous forme de code, gagnant ainsi du temps et réduisant les erreurs. Examinons comment « terraform proxmox » peut transformer vos opérations quotidiennes.

Qu'est-ce que Terraform ?

Terraform est un outil open source qui vous permet de créer, modifier et gérer en toute sécurité des infrastructures à l'aide de code. Vous écrivez des fichiers de configuration simples pour décrire les ressources souhaitées — serveurs, réseaux, stockage — et Terraform les crée pour vous. Il fonctionne sur de nombreuses plateformes. HashiCorp maintient Terraform, ce qui en fait un choix fiable en matière de DevOps.

Qu'est-ce que Proxmox ?

Proxmox Virtual Environment (VE) est une plateforme open source robuste pour la virtualisation. Elle vous permet d'exécuter à la fois des machines virtuelles (VM) et des conteneurs sur votre matériel. Proxmox offre une interface basée sur le web avec des fonctionnalités de clustering et prend en charge la migration à chaud des VM entre hôtes. Elle est populaire tant dans les laboratoires domestiques que dans les centres de données d'entreprise.

Pourquoi utiliser Terraform avec Proxmox ?

Associer Terraform à Proxmox vous donne accès à des outils d'automatisation puissants. Vous définissez votre infrastructure de machines virtuelles sous forme de code, garantissant ainsi une cohérence lors de chaque déploiement. Si vous avez besoin de dix machines virtuelles identiques, pourquoi cliquer dans les menus dix fois ? Avec « terraform proxmox », écrivez la configuration une seule fois, puis appliquez-la chaque fois que nécessaire.

Vous bénéficiez également d'un contrôle de version pour vos modifications d'infrastructure. Cela signifie moins d'erreurs manuelles et une récupération plus rapide en cas de problème.

Méthode 1 : Comment configurer Terraform pour Proxmox

L'automatisation de Proxmox avec Terraform commence par la configuration correcte des deux outils sur votre machine de gestion.

Installer Terraform

Avant tout, installez Terraform sur votre système local ou sur l'endroit d'où vous gérerez l'infrastructure. Téléchargez la dernière version depuis le site officiel. Suivez les instructions spécifiques à Windows, Linux ou macOS ; l'installation prend généralement seulement quelques minutes.

Après l'installation, vérifiez que tout fonctionne en exécutant terraform --version dans votre terminal ou invite de commande.

Configurer le fournisseur Proxmox

Vient ensuite la connexion de Terraform à votre serveur Proxmox à l'aide d'un plugin de fournisseur — le fournisseur Telmate est largement utilisé à cet effet.

Créez un nouveau répertoire pour vos fichiers de projet (par exemple : mkdir terraform-proxmox). Dans ce dossier, créez un fichier nommé main.tf :

terraform {
  required_providers {
    proxmox = {
      source  = "Telmate/proxmox"
      version = ">=2.9.9.11"
    }
  }
}

provider "proxmox" {
  pm_api_url      = "https://your-proxmox-server:8006/api2/json"
  pm_user         = "root@pam"
  pm_password     = "yourpassword" # Utilisez un jeton API ou une variable d'environnement au lieu de coder en dur
  pm_tls_insecure = true           # N'utilisez 'true' que pour les tests ; voir ci-dessous
}

Remplacez your-proxmox-server par l'adresse réelle de votre serveur ; remplacez yourpassword par vos identifiants, mais ne codez jamais en dur les mots de passe en production ! Pour une meilleure sécurité, utilisez des jetons API ou des variables d'environnement (voir section suivante).

Si vous effectuez uniquement des tests en local ou si vous disposez de certificats auto-signés sur Proxmox VE, définissez pm_tls_insecure sur true ; sinon, utilisez des certificats SSL valides dans les environnements de production.

Initialisez le projet en exécutant la commande suivante :

terraform init

Ceci télécharge les plugins nécessaires afin que vous soyez prêt à continuer lorsque vous voyez « Terraform a été initialisé avec succès ! »

Sécuriser les identifiants avec des variables d'environnement ou des jetons API

Intégrer en dur des informations sensibles telles que les mots de passe est risqué, encore plus lorsqu'on partage du code au sein d'équipes ! Préférez plutôt :

1. Utiliser des variables d'environnement :

Définir des variables telles que :

  • TF_VAR_pm_api_url

  • TF_VAR_pm_user

  • TF_VAR_pm_password

Dans les systèmes de type Unix :

   export TF_VAR_pm_api_url="https://your-prox-server:8006/api2/json"
   export TF_VAR_pm_user="root@pam"
   export TF_VAR_pm_password="supersecret"

2. Utiliser les jetons API :

Générez un jeton API via Centre de données > Autorisations > Jetons API dans l'interface web Proxmox.

Mettez ensuite à jour votre bloc de fournisseur :

   provider "proxmox" {
     pm_api_url            = var.pm_api_url
     pm_api_token_id       = var.pm_api_token_id
     pm_api_token_secret   = var.pm_api_token_secret
     pm_tls_insecure       = false # Recommandé pour la production !
   }

3. Définir les variables dans les fichiers :

Créez un fichier séparé (variables.tf) listant toutes les variables utilisées ci-dessus afin de pouvoir les gérer facilement sans exposer directement les informations sensibles dans les dépôts de code.

L'utilisation de ces méthodes permet de garder les identifiants à l'abri des regards—une pratique indispensable !

Méthode 2 : Approvisionnement de machines virtuelles avec le fournisseur Terraform Proxmox

Une fois la configuration terminée, il est temps de créer effectivement des machines virtuelles automatiquement à l'aide de fichiers de configuration, plutôt que de cliquer à chaque fois dans les menus !

Préparation d'un modèle de machine virtuelle Proxmox pour le clonage

La méthode la plus efficace pour déployer plusieurs machines virtuelles similaires consiste à les cloner à partir d'un modèle existant — une image de base préconfigurée avec les paramètres du système d'exploitation, mais à laquelle aucune identité unique telle que le nom d'hôte ou l'adresse IP n'a encore été attribuée.

Pour en préparer un :

1. Créez une nouvelle machine virtuelle à l'aide de l'assistant Créer une machine virtuelle dans l'interface web.

2. Installez un système d'exploitation (comme Ubuntu Server).

3. Personnalisez les paramètres selon vos besoins (taille du disque/réseau).

4. Arrêtez la machine virtuelle une fois l'installation terminée.

5. Cliquez avec le bouton droit sur son nom sous Datacenter, puis sélectionnez Convertir en modèle.

6. Ce modèle peut maintenant être cloné à plusieurs reprises !

Sans cette étape, le clonage échouera car aucune source n'existe — préparez donc toujours les modèles en premier avant d'automatiser les déploiements massifs !

Définir la configuration de la machine virtuelle à l'aide de fichiers HCL

À présent, définissons à quoi devrait ressembler notre nouvelle machine virtuelle dans un autre fichier appelé vm.tf. Voici un exemple de bloc de ressource :

resource "proxmox_vm_qemu" "ubuntu_vm" {
  name        = "ubuntu-vm"
  target_node = "prox-node1"
  clone       = "ubuntu-template" # Doit correspondre au nom du modèle préparé !
  cores       = 2
  memory      = 2048
  
  disk {
    size    = "20G"
    type    = "scsi"
    storage = "local-lvm"
  }

  network {
    model  = "virtio"
    bridge = "vmbr0"
  }

  os_type    = "cloud-init" 
  ciuser     = var.vm_user         # Utilisez la variable ici !
  cipassword = var.vm_password     # Ne codez jamais en dur les mots de passe !
  
  ipconfig0 =
    "ip=192.168.1.1"

}

Assurez-vous que "clone" correspond exactement au nom du modèle créé précédemment ! Ajustez les valeurs de CPU, mémoire, disque, réseau selon les besoins, et utilisez toujours des variables plutôt que des mots de passe en texte clair lorsque cela est possible.1.100/24,gw=192.1681.

Utilisation de Cloud-Init pour la configuration dynamique

Vous avez remarqué que "os_type" est défini sur "cloud-init" ci-dessus ? Cloud-Init vous permet d'insérer des données utilisateur telles que les noms d'utilisateur, les mots de passe ou les adresses IP au démarrage, ce qui rend chaque machine virtuelle clonée unique, même si elles partagent une même image de base !

Pour activer la prise en charge de Cloud-Init :

1. Téléchargez les images ISO officielles de Cloud-Init via le menu Datacenter > Stockage > Contenu > Télécharger.

2. Associez cet ISO comme lecteur de CD-ROM lors de la création initiale du modèle.

3. Lors de la définition des ressources en HCL (os_type, ciuser, etc.), spécifiez des valeurs dynamiques selon les besoins de déploiement.

4 . Utilisez éventuellement des paramètres avancés tels que "cicustom" si vous fournissez des scripts ou configurations personnalisés.

Cette approche permet de gagner des heures par rapport à une personnalisation manuelle après le clonage !

Appliquer la configuration et gérer le cycle de vie

Prêt à lancer ? Exécutez ces commandes depuis le répertoire de votre projet :

terraform plan

Ceci prévisualise les modifications qui seront apportées—toujours examiner la sortie avant d'appliquer des mises à jour importantes !

Si satisfait, exécutez :

terraform apply

Terraform instruit désormais les serveur(s) Proxmox VE via son API afin de créer de nouvelles machines virtuelles correspondant à tous les paramètres spécifiés ! La progression apparaît à la fois à l'écran et dans le tableau de bord de l'interface web.

Supprimer les ressources en toute sécurité

Besoin d'un nettoyage ultérieur ?

terraform destroy

supprime tout ce qui est défini par les configurations actuelles, y compris la suppression définitive des machines virtuelles ! Soyez prudent ici ; envisagez d'ajouter des règles de cycle de vie telles que :

lifecycle {
 prevent_destroy = true 
}

aux ressources critiques afin d'éviter les suppressions accidentelles.

Sauvegarder les machines virtuelles Proxmox avec Vinchin Backup & Recovery

Après avoir automatisé le déploiement des machines virtuelles à l'aide des workflows terraform proxmox, assurer une sauvegarde fiable devient essentiel pour la continuité des activités et la protection des données dans des environnements tels que Proxmox VE et au-delà (y compris VMware, Hyper-V, oVirt, OLVM, RHV, XCP-ng, XenServer, OpenStack, ZStack et plus de 15 plateformes de virtualisation grand public). Vinchin Backup & Recovery se distingue comme une solution de niveau entreprise conçue spécifiquement pour la sauvegarde de machines virtuelles sur des infrastructures diverses.

Avec une compatibilité étendue – y compris une prise en charge complète des modes de sauvegarde incrémentielle tels que les sauvegardes basées sur CBT sur les hyperviseurs pris en charge – Vinchin Backup & Recovery offre des fonctionnalités robustes adaptées aux besoins informatiques modernes : les stratégies de sauvegarde incrémentielle permanente minimisent l'utilisation du stockage ; la dé-duplication/compression accélère les tâches tout en économisant de l'espace ; la restauration granulaire permet des scénarios de récupération précis ; les sauvegardes planifiées garantissent une protection régulière sans intervention manuelle ; la migration V2V multiplateforme simplifie la mobilité des charges de travail entre différents hyperviseurs, le tout géré via une interface console intuitive qui transforme des opérations complexes en flux de travail clairs.

La sauvegarde d'une machine virtuelle nouvellement approvisionnée avec Vinchin Backup & Recovery se fait en seulement quatre étapes via sa console web conviviale :

✅ Étape 1 : Sauvegarder la machine virtuelle Proxmox

Sélectionner la machine virtuelle Proxmox à sauvegarder

✅ Étape 2 : Restaurer sur la plateforme cible (par exemple, Azure ou VMware)

Choisir le stockage de sauvegarde

✅ Étape 3 :  Configurer les stratégies de sauvegarde;

Configurer les stratégies de sauvegarde

✅ Étape 4 :  Soumettre la tâche.

Soumettre la tâche

Reconnu mondialement par des milliers d'entreprises — avec les meilleures notes et une forte confiance des clients — Vinchin Backup & Recovery propose un essai gratuit complet valable 60 jours ; cliquez ci-dessous pour découvrir directement une protection complète des données !

Utilisation de Terraform avec Proxmox : FAQ

Q1 : Puis-je automatiser la création de conteneurs ainsi que celle des machines virtuelles à l'aide de Terraform avec Proxmox ?

Oui, vous pouvez gérer à la fois les machines virtuelles basées sur QEMU et les conteneurs LXC via des types de ressources pris en charge dans les mêmes configurations.

Q2 : Comment puis-je renouveler en toute sécurité les identifiants utilisés par mes scripts d'automatisation ?

Stockez les secrets en dehors de la base de code, dans des variables d'environnement, ou intégrez des gestionnaires externes de secrets, puis référencez-les dynamiquement pendant les exécutions.

Q3 : Que dois-je faire si ma personnalisation cloud-init n'est pas appliquée après le clonage ?

Vérifiez que l'ISO cloud-init a été correctement attaché lors de la création du modèle, puis assurez-vous que la syntaxe et les valeurs transmises aux définitions de ressource sont correctes.

Conclusion

L'automatisation de la gestion des machines virtuelles via Terraform Proxmox augmente l'efficacité tout en réduisant le risque d'erreur humaine au sein des équipes informatiques partout dans le monde ! Pour des sauvegardes fiables intégrées de façon transparente à ces flux de travail, envisagez Vinchin — une solution éprouvée et faisant confiance globalement par des professionnels comme vous.

Partager sur :

Categories: VM Backup