Première infrastructure
Le cycle de vie Terraform se résume à quatre commandes : init, plan, apply, destroy. Comprendre ce que chacune fait en profondeur évite les surprises en production.
Le cycle de vie
# 1. Initialiser le projet (télécharge les providers)
terraform init
# 2. Prévisualiser les changements
terraform plan
# 3. Appliquer les changements
terraform apply
# 4. Détruire l'infrastructure
terraform destroyPremier exemple : provider local
Le provider local crée des fichiers locaux — idéal pour apprendre sans accès cloud :
# main.tf
terraform {
required_providers {
local = {
source = "hashicorp/local"
version = "~> 2.0"
}
}
}
resource "local_file" "config" {
filename = "${path.module}/output/config.txt"
content = "Environment: ${var.environment}
Date: ${timestamp()}"
}
variable "environment" {
type = string
default = "dev"
}
output "file_path" {
value = local_file.config.filename
}terraform init
terraform plan
terraform apply
cat output/config.txt
terraform destroyterraform plan : lire la sortie
Le plan affiche les changements prévus avec un code couleur et des symboles :
+vert : ressource à créer-rouge : ressource à détruire~jaune : ressource à modifier in-place-/+: destroy puis recréation (modification impossible in-place)
La ligne Plan: X to add, Y to change, Z to destroy résume l'impact. Toujours lire ce résumé avant d'appliquer, surtout en production.
Sauvegarder et réutiliser un plan
# Sauvegarder le plan dans un fichier binaire
terraform plan -out=tfplan
# Appliquer exactement ce plan (sans reproposer les changements)
terraform apply tfplanC'est le pattern recommandé en CI/CD : plan dans la MR, apply sur merge, avec le fichier tfplan comme artefact garantissant que ce qui est appliqué est exactement ce qui a été reviewé.
Le state : concept fondamental
Terraform maintient un fichier terraform.tfstate qui mappe les ressources déclarées en HCL aux ressources réelles. C'est la source de vérité de Terraform sur l'état actuel de l'infrastructure.
Le state est utilisé pour :
- Calculer le diff entre l'état désiré et l'état réel lors du
plan - Stocker les attributs des ressources créées (IDs, IPs, ARNs...)
- Gérer les dépendances entre ressources
En local, terraform.tfstate est un fichier JSON. En production, il doit être stocké dans un backend distant (S3, GCS, Terraform Cloud) pour permettre le travail en équipe sans conflits. Les backends distants sont couverts dans la section Production.
Inspecter le state
# Lister les ressources dans le state
terraform state list
# Voir le détail d'une ressource
terraform state show local_file.config
# Sortie JSON complète du state
terraform show -json