[Proxmox] Déployer des vm’s avec Terraform

 

Article original Publié le : 1 septembre 2022
Mise à jour le :

 

Version de l’OS Debian 11
Version de Terraform 1.2.8
Version du Provider 2.9.11

 

 

  • Préparation de l’environnement système
  • Installation de Terraform
  • Création compte, rôle et permissions
  • Préparation et configuration de l’environnement
  • Init, plan & apply
  • Modification de vm
  • Destroy

 

Cet article est basé sur le billet de https://blog.levassb.ovh/post/terraform/

J’en ai repris les grandes lignes, adapté et complété pour mes besoins de tests

 

 

  • I. Préparation de l’environnement système

Mise à jour du système

Installation de paquet utile

 

 

  • 2. Installation de Terraform

Pour la dernière release

https://www.terraform.io/cli/install/apt

 

 

  • 3. Création compte, rôle et permissions

Créer un compte de service sur Proxmox qui sera dédié à Terraform

Créer le rôle et les permissions nécessaires pour les accès

Associer l’user Terraform au rôle précédemment créé

Enfin, créer le token qui servira à se connecter à l’API

Pour tester le bon fonctionnement du compte sur l’api, tester avec un curl

 

 

  • 4. Préparation et configuration de l’environnement

Un ou plusieurs fichiers .tf peuvent être créés, pour une meilleure visibilité, il convient de dissocier les fonctions

  • fichier pour le provider
  • fichier pour les variables
  • fichier par vm

Cela devrait ressembler à ceci

 

Créer un répertoire et tous les fichiers nécessaires

Il n’y a pas de provider officiel pour Proxmox mais le plus abouti est celui de Telmate qui est actuellement en v2.9.11

Le fichier de variable contient toutes les infos nécessaires à la connexion à l’api Proxmox et l’exécution du template associé à ce projet

On y retrouve le pm_api_token_id et le pm_api_token_secret précédemment crée

 

Le fichier de vm, dans l’exemple la vm01, le minimum requis

 

 

  • 5. Init, plan & apply

La structure étant vérifié, il faut maintenant l’initialisé

 

Ensuite faire lire à Terraform le contenu des vms pour action

 

Si pas d’erreur, on peut appliquer pour le clonage des vms

 

Vérifier la présence et l’état coté Proxmox

 

 

  • 6. Modification de vm

On peut ajouter de la mémoire ou du cpu sans que cela affecte les vms, on peut également seté d’autres options comme le firewall et l’agent qemu que j’ai oublié d’activer dans le template.
J’ai donc modifié la vm01 et lors du plan, il ne détecte pas de changement sur vm02 et vm03, donc il ne touche pas à son état lors de l’application

 

 

6. Destroy

Terraform garde un état de son déploiement initiale, ainsi on retrouve les fichiers terraform.tfstate et terraform.tfstate.backup

Si on modifie une option ou que l’on supprime une vms manuellement dans Proxmox et que l’on rejoue terraform, il remettra l’état écrit dans son terraform.tfstate

Pour supprimer des vms, il faut donc passer par la commande destroy
Mais attention le destroy ci-dessous supprimera les 3 vms sans distinction

 

Pour supprimer une vm en particulier, il faut avoir seté une ressource différente, ainsi avec un state list on va pouvoir supprimer une target défini

 

 

 

No votes yet.
Please wait...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.