Mise en pratique : du plan d’exécution à la suppression
Maintenant que notre projet Terraform est complet, passons à la mise en pratique. Nous allons effectuer un déploiement réel de notre infrastructure dans Azure, vérifier son bon fonctionnement, puis la supprimer proprement les composants que nous aurons créés. Ce processus permet de valider à la fois la syntaxe du code, la cohérence de la configuration et l’automatisation des opérations.
Sommaire
I. Étape 1 : Initialiser le projet
Depuis votre terminal, placez-vous dans le répertoire terraform qui contient vos fichiers .tf. C’est dans ce dossier que vous avez défini la configuration de votre infrastructure (réseau, VM, sécurité, etc.).
Commencez par exécuter la commande suivante :
terraform init
Voici un exemple de la sortie que vous obtiendrez :

Cette commande initialise un projet Terraform en téléchargeant les providers nécessaires (comme azurerm pour Azure), en configurant le backend de stockage du fichier d’état et en générant un fichier .terraform.lock.hcl pour verrouiller les versions utilisées. Ce dernier fichier permet de garantir que les futures exécutions du projet utiliseront les mêmes versions, assurant ainsi sa stabilité et sa reproductibilité.
Vous pouvez ensuite vérifier que vos fichiers sont valides sur le plan syntaxique et logique avec :
terraform validate
Success! The configuration is valid.
La commande terraform validate s’assure que la configuration est bien structurée et que les types de données attendus sont respectés. Elle détectera, par exemple, une variable manquante ou un bloc mal formé.
II. Étape 2 : Générer un plan d'exécution
Avant de lancer le déploiement réel (terraform apply), il est toujours préférable de générer un plan d'exécution avec la commande terraform plan pour confirmer les actions qui seront exécutées par Terraform
terraform plan
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following
symbols:
+ create
Terraform will perform the following actions:
[...]
Voici une capture qui montre un extrait de la sortie de cette commande :

Cette opération compare l’état actuel de l’infrastructure avec celui qui est défini dans votre configuration (lors du premier déploiement, il n'y a aucune ressource à comparer). Elle affiche ensuite les ressources qui seront ajoutées, modifiées ou supprimées. C’est une étape clé pour s’assurer que Terraform fera bien ce que vous attendez avant d’appliquer les changements.
III. Étape 3 : Appliquer la configuration
Lorsque tout vous semble conforme, vous pouvez lancer le déploiement avec terraform apply. Terraform va alors parcourir tous les fichiers .tf, calculer un plan d’exécution et vous demander confirmation avant de procéder (Do you want to perform these actions? Enter value: yes). Une fois autorisé à exécuter le déploiement, Terraform se connecte à la plateforme cible (Azure) et il crée chaque ressource définie dans l’ordre approprié : groupe de ressources, réseau, sous-réseau, IP publique, NSG, interface réseau et enfin la machine virtuelle.
Chaque ressource est provisionnée en respectant les dépendances implicites ou explicites définies dans la configuration. Une fois terminé, Terraform affiche les valeurs de sortie définies dans outputs.tf, comme l’adresse IP publique ou l’ID de la machine virtuelle.

Une fois le déploiement terminé, vous devriez voir s’afficher les valeurs de sortie définies dans outputs.tf, dont l’adresse IP publique de la machine virtuelle.
[...]
Apply complete! Resources: 8 added, 0 changed, 0 destroyed.
Outputs:
admin_username = "adminuser"
vm_id = "/subscriptions/27064a4c-a289-495d-9dbd-da2cce50d224/resourceGroups/rg-demo/providers/Microsoft.Compute/virtualMachines/vm-ubuntu-demo"
vm_name = "vm-ubuntu-demo"
vm_private_ip = "10.0.1.4"
vm_public_ip = "4.248.12.228"
Si vous le souhaitez, vous pouvez aller voir en mode graphique les composants que vous avez déployés dans l'interface web d'Azure.
1) Connectez-vous à Azure et sélectionnez Groupes de ressources. Vous devriez voir le groupe de ressources (ici : rg-demo) que nous avons créé via Terraform. Cliquez dessus pour confirmer qu'il contient bien l'infrastructure déployée :

2) Le RG devrait contenir les composants suivants :

Félicitations ! Vous venez d'effectuer votre premier déploiement en Terraform !
A. Vérification : Connexion SSH à la VM
Une fois la machine virtuelle déployée, vous pouvez vous connecter en SSH pour vérifier que tout fonctionne correctement. Cette étape permet de vous assurer que la VM est accessible depuis l’extérieur et que les éléments provisionnés (comme le fichier de bienvenue ou l’installation de Terraform) sont bien en place.
La commande terraform output peut également vous être utile pour obtenir les valeurs de sorties nécessaires pour vous connecter :
$ terraform output
admin_username = "adminuser"
vm_id = "/subscriptions/27064a4c-a289-495d-xxxxxxxxx/resourceGroups/rg-demo/providers/Microsoft.Compute/virtualMachines/vm-ubuntu-demo"
vm_name = "vm-ubuntu-demo"
vm_private_ip = "10.0.1.4"
vm_public_ip = "4.248.12.228"
Sous Linux ou macOS
Depuis un terminal, utilisez la commande suivante pour vous connecter :
ssh -i ~/.ssh/ma_cle_privee.pem adminuser@<ip_publique_vm>
Remplacez :
~/.ssh/ma_cle_privee.pempar le chemin de votre clé privée SSH ;adminuserpar la valeur de votre variableadmin_username;<ip_publique_vm>par la sortievm_public_ipde Terraform.
Sous Windows
Deux options s’offrent à vous :
PowerShell avec OpenSSH :
ssh -i C:\chemin\vers\ma_cle_privee.pem adminuser@<ip_publique_vm>
Client SSH comme PuTTY :
Entrez l’adresse IP dans PuTTY, précisez le nom d’utilisateur et chargez la clé dans la section SSH > Auth > Credentials.

Voici un exemple de sortie lorsque vous établirez une première connexion :
adminuser@vm-ubuntu-demo:~$ Connection to 4.248.26.30 closed by remote host.
Connection to 4.248.26.30 closed.
PS C:\Users\Utilisateur> ssh -i C:\Users\Utilisateur\.ssh\id_rsa [email protected]
The authenticity of host '4.248.12.228 (4.248.12.228)' can't be established.
ED25519 key fingerprint is SHA256:nC3poVYysvHcDYdNFLU4uRxxxxxxxxxxx.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '4.248.12.228' (ED25519) to the list of known hosts.
Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.15.0-1088-azure x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
System information as of Sun May 11 17:57:18 UTC 2025
System load: 0.61 Processes: 111
Usage of /: 6.4% of 28.89GB Users logged in: 0
Memory usage: 30% IPv4 address for eth0: 10.0.1.4
Swap usage: 0%
Expanded Security Maintenance for Applications is not enabled.
0 updates can be applied immediately.
Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status
New release '22.04.5 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
Last login: Sun May 11 17:55:21 2025 from 174.95.2.23
adminuser@vm-ubuntu-demo:~$
B. Variante : Connexion via WinRM à une VM Windows
Si vous avez déployé une machine virtuelle Windows, vous pouvez utiliser PowerShell pour vous connecter à distance à l’aide du protocole WinRM qui a été activé automatiquement dans le cadre du provisionnement.
Ouvrez un terminal PowerShell sur votre poste local et exécutez la commande suivante (en adaptant l’adresse IP et le mot de passe) :
Enter-PSSession -ComputerName <IP_PUBLIQUE_VM> -Credential (Get-Credential) -UseSSL
Lorsque vous êtes invité à entrer des identifiants, fournissez le nom d’utilisateur administrateur (par exemple azureuser) et le mot de passe que vous avez défini.
IV. Étape 4 : Vérifications dans la VM
Une fois connecté à la machine virtuelle, vous pouvez effectuer quelques vérifications simples pour confirmer que le provisionnement s’est bien déroulé. Cette étape permet de valider la présence des éléments attendus, comme le fichier de bienvenue ou l’installation de Terraform.
Utilisez la commande ls pour vérifier la présence du fichier bienvenue.txt dans le répertoire de l’utilisateur ;
adminuser@vm-ubuntu-demo:~$ ls
bienvenue.txt terraform.zip
Affichez son contenu avec cat :
adminuser@vm-ubuntu-demo:~$ cat bienvenue.txt
Bienvenue dans votre première VM provisionnée avec Terraform !
Vérifiez que Terraform a bien été installé via terraform version :
adminuser@vm-ubuntu-demo:~$ terraform version
Terraform v1.6.6
on linux_amd64
Your version of Terraform is out of date! The latest version
is 1.11.3. You can update by downloading from https://www.terraform.io/downloads.html
adminuser@vm-ubuntu-demo:~$
Ces étapes confirment que votre provisionnement avec remote-exec a bien fonctionné.
A. Variante : Vérifications dans une VM Windows
Une fois connecté à la session distante, vous pouvez vérifier que le provisionneur remote-exec a bien exécuté les commandes prévues :
# Vérifier le fichier de bienvenue
Get-Content "C:\Users\<nom_utilisateur>\Desktop\bienvenue.txt"
Bienvenue dans votre première VM provisionnée avec Terraform !
# Vérifier l'installation de Terraform
terraform --version
Terraform v1.11.4
on windows_amd64
V. Étape 5 : Modifier une ressource
N'hésitez pas à tester le comportement de Terraform lorsque vous modifiez une ressource. Par exemple, vous pouvez maintenant modifier le fichier terraform.tfvars et augmenter la taille du disque de la machine virtuelle. Faites ensuite un terraform apply pour observer comment Terraform gère ce changement.
Autre essai qui peut être intéressant : essayez d’augmenter le nombre de CPU de la machine virtuelle pour voir comment Terraform va appliquer les changements à une ressource existante.
Ouvrez le fichier terraform.tfvars et ajustez la variable correspondante :
vm_size = "Standard_B2s"
Par exemple, passez de Standard_B1s (1 vCPU) à Standard_B2s (2 vCPU) et exécutez à nouveau terraform apply.
Terraform va-t-il détruire complètement la VM et la recréer ? Va-t-il être capable d'ajouter un vCPU directement ? À vous d'explorer !
VI. Étape 6 : Nettoyer son environnement avec "terraform destroy"
Une fois que l’infrastructure a été testée, validée ou simplement utilisée à des fins d’apprentissage, il est recommandé de la supprimer proprement pour éviter de laisser des ressources actives dans Azure… et des frais inutiles.
C’est exactement ce que permet la commande terraform destroy :

Terraform lit alors le fichier terraform.tfstate pour identifier toutes les ressources qu’il a créées et il génère un plan de suppression que vous pouvez examiner avant confirmation. Une fois validée (Enter a value : yes), la destruction est effectuée de façon automatisée.
[...]
azurerm_resource_group.rg: Destruction complete after 16s
Destroy complete! Resources: 8 destroyed.
Cette commande est particulièrement utile dans un contexte de test ou de formation, car elle permet de réinitialiser entièrement l’environnement en cas d’erreur et de rejouer plusieurs fois le cycle complet (init > apply > destroy). Cette opération vous permettra d’approfondir votre compréhension du workflow Terraform sans risquer d’encombrer votre abonnement avec des ressources persistantes.
