DevOpsFacile
AccueilParcours de formationCertificationsModulesCheat SheetÀ Propos
DevOpsFacile

Une plateforme d'apprentissage complète pour maîtriser les pratiques DevOps modernes, du débutant à l'expert.

contact@devopsfacile.fr

Formation

  • Parcours de formation
  • Modules

Informations

  • À Propos
  • Conditions d'utilisation
  • Confidentialité
  • Mentions légales

© 2026 DevOps Facile. Tous droits réservés.

Fait avec pour la communauté DevOps

ModulesInfrastructure as Code : premiers pas avec Terraform04 - Comprendre le workflow plan → apply → destroy

Détails

  • 20 minutes
  • Débutant

Objectifs

  • Lire et interpréter la sortie de terraform plan
  • Appliquer les changements avec terraform apply
  • Comprendre le fichier terraform.tfstate
  • Supprimer les ressources avec terraform destroy
Module Infrastructure as Code : premiers pas avec Terraform

Exercice 04 : Comprendre le workflow plan → apply → destroy

🎯 Objectifs

À la fin de cet exercice, vous serez capable de :

  • ✅ Lire la sortie de terraform plan (+, ~, -)
  • ✅ Appliquer les changements et vérifier le résultat
  • ✅ Comprendre le rôle du fichier terraform.tfstate
  • ✅ Utiliser terraform show et terraform destroy

Durée estimée : 20 minutes

Difficulté : ⭐⭐☆☆☆ (Débutant+)

Prérequis : Terraform installé, Docker en cours d'exécution, exercice 03 terminé


📖 Contexte

Le workflow Terraform est un cycle en trois étapes : plan (prévisualiser), apply (exécuter), destroy (supprimer). Le state (terraform.tfstate) est la mémoire de Terraform : il mémorise l'état actuel de l'infrastructure pour calculer les changements lors du prochain plan.


📋 Énoncé

Vous allez créer un conteneur Docker, l'inspecter via le state, le modifier, observer la différence dans le plan, et finalement tout détruire.

Résultat attendu :

  • Compréhension complète du workflow Terraform
  • Lecture fluide de la sortie terraform plan

🧭 Déroulement de l'exercice

Tâche 1 : Lire terraform plan avant l'apply

Depuis le projet de l'exercice 03, lancez terraform plan sans appliquer. Interprétez chaque symbole.

Indice : + = créer, ~ = modifier en place, -/+ = détruire et recréer, - = supprimer.

Vérification : Vous identifiez le nombre exact de ressources à créer dans la ligne Plan: X to add, 0 to change, 0 to destroy.


Tâche 2 : Sauvegarder le plan dans un fichier

Sauvegardez le plan dans un fichier binaire tfplan et appliquez-le.

Indice : terraform plan -out=tfplan puis terraform apply tfplan. Cela évite la demande de confirmation et garantit l'application exacte du plan prévisualisé.

Vérification : terraform apply tfplan n'affiche pas de prompt de confirmation.


Tâche 3 : Inspecter le state

Après l'apply, examinez le fichier terraform.tfstate et utilisez terraform show pour un affichage lisible.

Indice : Le tfstate est un fichier JSON. Il contient l'état réel de chaque ressource après la création.

Vérification : terraform show affiche les attributs réels des ressources (IDs, IPs, etc.).


Tâche 4 : Modifier une ressource et observer le plan

Changez le port externe du conteneur de 8080 à 9090 dans main.tf, puis lancez terraform plan.

Indice : Docker ne permet pas de modifier un port d'un conteneur en cours d'exécution. Terraform va donc détruire et recréer le conteneur (-/+).

Vérification : Le plan affiche # docker_container.web must be replaced avec -/+.


Tâche 5 : Détruire l'infrastructure

Après l'apply de la modification, détruisez toute l'infrastructure avec terraform destroy.

Indice : terraform destroy demande une confirmation. Tapez yes. Le state devient vide.

Vérification : terraform show n'affiche plus aucune ressource. docker ps ne liste plus le conteneur nginx.


🗂️ Mini-Projet : Cycle complet commenté

Documentez chaque étape du workflow avec les outputs attendus :

hcl
# main.tf - v1 : création
resource "docker_container" "web" {
  name  = "nginx-workflow"
  image = docker_image.nginx.image_id
  ports {
    internal = 80
    external = 8080
  }
}
hcl
# main.tf - v2 : modification (changer external port)
resource "docker_container" "web" {
  name  = "nginx-workflow"
  image = docker_image.nginx.image_id
  ports {
    internal = 80
    external = 9090   # changement : 8080 → 9090
  }
}

Checkpoints :

  • terraform plan sur v1 affiche Plan: 2 to add, 0 to change, 0 to destroy
  • terraform apply crée les ressources, docker ps confirme le conteneur
  • cat terraform.tfstate est un JSON valide avec les ressources
  • terraform plan sur v2 affiche -/+ (destroy et recreate pour le conteneur)
  • terraform destroy vide le state (0 resources)

Retour au module

Sur cette page

  • 🎯 Objectifs
  • 📖 Contexte
  • 📋 Énoncé
  • 🧭 Déroulement de l'exercice
  • Tâche 1 : Lire terraform plan avant l'apply
  • Tâche 2 : Sauvegarder le plan dans un fichier
  • Tâche 3 : Inspecter le state
  • Tâche 4 : Modifier une ressource et observer le plan
  • Tâche 5 : Détruire l'infrastructure
  • 🗂️ Mini-Projet : Cycle complet commenté