
Le Cloud sur votre PC - Partie 2 : Automatiser la création de vos VMs avec Terraform
· 6 min read
Dans la Partie 1, nous avons créé des VM avec Multipass, préparé leurs accès et appris à les faire communiquer. Notre petit cloud local commence à prendre forme !
Jusqu’ici, nous lancions les commandes de création nous-mêmes. Pour deux machines, cela reste simple. Mais si nous voulons retrouver le même environnement pour chaque nouveau projet, il faut reprendre les commandes, les noms et les ressources à attribuer.
Et si nous décrivions plutôt les machines souhaitées dans des fichiers, pour laisser un outil se charger de leur création ?
C’est ce que nous allons faire avec Terraform, en gardant Multipass pour créer nos VM. Nous découvrirons le principe de l’Infrastructure as Code à travers notre labo. Vous vouliez essayer Terraform sans payer des ressources cloud ? Notre PC nous offre déjà un terrain d’essai.
L’objectif n’est pas de faire le tour de Terraform, mais de découvrir comment l’utiliser avec Multipass pour décrire et créer nos VM. Notre PC devient un terrain d’essai pour l’IaC, sans compte cloud !
Les prérequis
Pour suivre cet article, prévoyez :
- Multipass installé et fonctionnel, comme dans la première partie ;
- suffisamment de mémoire et d’espace disque disponibles pour deux petites VM ;
- une connexion Internet pour télécharger les éléments nécessaires ;
- les fichiers du labo, disponibles dans le dossier
infra/multipass-terraformdu dépôt the-labs
L'IaC et Terraform, en quelques mots
L'Infrastructure as Code, ou IaC, consiste à décrire et gérer son infrastructure à partir de fichiers de code ou de configuration. Ces fichiers peuvent être relus, partagés et versionnés, comme le code d'une application.
Terraform est un outil qui permet cette approche. Nous décrivons les ressources souhaitées dans des fichiers .tf, généralement avec le langage HCL. Terraform prépare ensuite un plan d'actions pour obtenir l'infrastructure décrite.
Pour notre exemple, les ressources seront simplement des VMs. Pas besoin d'un compte cloud pour découvrir le principe !
Cet article n'est pas un cours complet sur Terraform. Pour approfondir sa syntaxe et ses possibilités, je vous recommande la documentation officielle. Ici, nous allons surtout comprendre son fonctionnement et l'appliquer à ce que nous connaissons déjà : Multipass.
Que se passe-t-il en vrai ?
Terraform ne sait pas, à lui seul, créer toutes les ressources de toutes les plateformes. Il s'appuie sur des providers : des plugins qui font le lien avec les systèmes à piloter.
Un provider est un plugin qui permet à Terraform de communiquer avec une plateforme.
awspour Amazon Web Servicesazurermpour Azuregooglepour Google Cloudmultipasspour Multipass
Pour un fournisseur cloud, le provider communique généralement avec ses API : il traduit les opérations de Terraform en demandes de création, de consultation ou de suppression de ressources.
Le principe est donc :
Dans notre cas, nous utiliserons le provider communautaire larstobi/multipass. Celui-ci appelle la commande Multipass installée sur notre PC ; il ne passe pas par l'API d'un fournisseur cloud distant.
Terraform connect with Multipass provider
Vous parlez à Terraform, Terraform passe par le provider de Multipass, et Multipass s'occupe des VMs. Les rôles sont complémentaires : nous changeons la manière de demander les VM, pas l'outil qui les crée.
Installation de Terraform
Terraform est disponible sur Linux, macOS et Windows.
- Linux / macOS
brew install terraform- Windows
winget install Hashicorp.TerraformVérifiez l’installation :
terraform versionLe flow avec Terraform
Voici les étapes les plus courants que vous allons suivre en utilisant Terraform :
Flow de travail avec Terraform
terraform init: initialise le projet Terraform et télécharge les providers et dépendances nécessaires ;terraform plan: analyse la configuration Terraform et affiche les changements qui seront effectués sur l’infrastructure, sans créer ni modifier de ressources ;terraform apply: applique les changements définis dans la configuration et procède à la création ou à la modification des ressources ;terraform destroy: supprime les ressources gérées par Terraform.
Pour notre project: Terraform et Multipass
Clonez le projet :
git clone git@github.com:victor3spoir/the-labs.git
cd the-labs/infra/multipass-terraformLa structure du dossier ressemble à ceci :
multipass-terraform
├ terraform
│ ├ main.tf
│ ├ providers.tf
│ ├ variables.tf
│ └ config
│ ├ srv-01.yml
│ └ srv-02.ymlLes fichiers principaux sont :
- main.tf : définition des VMs
- providers.tf : déclaration du provider
- variables.tf : paramètres configurables
- config/* : fichiers cloud-init
Le provider
Dans providers.tf, on déclare le provider Multipass :
terraform {
required_providers {
multipass = {
source = "larstobi/multipass"
version = "1.4.3"
}
}
}
provider "multipass" {}Cela indique à Terraform que les ressources doivent être créées avec Multipass.
Les VMs
Les machines virtuelles sont définies dans main.tf
resource "multipass_instance" "srv_01" {
name = "srv-01"
cpus = 2
memory = "1G"
disk = "10G"
cloudinit_file = "${path.module}/config/srv-01.yml"
}
resource "multipass_instance" "srv_02" {
name = "srv-02"
cpus = 1
memory = "1G"
disk = "5G"
cloudinit_file = "${path.module}/config/srv-02.yml"
}Chaque bloc resource décrit une VM : (nom de la machine, CPU, RAM, Disque, configuration cloud-init)
Créer les machines avec Terraform
Initialiser
Une fois votre configuration prête, il suffit d’exécuter :
terraform init
terraform validateinit télécharge le provider et prépare le dossier ; validate vérifie la cohérence de notre configuration. Pour l'instant, aucune VM n'est créée.

Examiner le plan
terraform plan
Plannification de la création des ressources
Appliquer
terraform apply
Initialisation du project
Terraform recalcule un plan et demande confirmation. Relisez-le, puis saisissez yes si tout vous convient.
Après l'exécution :
multipass list
multipass shell srv-01Vous retrouvez votre instance, comme dans la première partie.
Félicitations ! Nous venons de créer nos deux machines à partir de leur description. Les accès et la communication réseau restent ceux de Multipass que nous avons déjà explorés.
Supprimer les VMs
Une fois vos tests terminés, récupérez les données utiles, puis lancez depuis le même dossier :
terraform destroy
Terraform présente les ressources à supprimer et demande confirmation. Vérifiez qu'il s'agit bien de nos instances de test avant de répondre yes.
Conclusion
Notre exemple tient dans deux VM, mais le principe est là : nous décrivons les machines souhaitées, Terraform prépare les actions et Multipass les crée. Cette description reste dans nos fichiers, prête à être adaptée et réutilisée pour nos prochains labos.
Voilà, notre petit cloud local prend forme ! Pas besoin d’un compte chez un fournisseur cloud pour commencer à pratiquer Terraform : notre PC nous offre déjà un terrain d’essai.
Nous savons maintenant créer nos machines. Mais installer les mêmes outils sur chacune reste répétitif. Dans la prochaine partie, nous verrons comment Ansible peut s’en charger.
