Génère un plan d’exécution montrant les changements que Terraform va appliquer à l’infrastructure. Ne modifie rien.
Toujours exécuter
planavantapply. Sauvegarder le plan avec-outpour garantir l’idempotence.
Options principales
| Option | Défaut | Description |
|---|---|---|
-out=FICHIER | aucun | Sauvegarde le plan dans un fichier pour un apply ultérieur |
-var="key=value" | aucune | Définit une variable inline |
-var-file=FICHIER | terraform.tfvars | Charge les variables depuis un fichier |
-target=RESSOURCE | toutes | Cible une ressource ou un module spécifique |
-destroy | non | Plan de destruction (équivalent terraform destroy en dry-run) |
-refresh=true|false | true | Actualise le state avec l’état réel avant le plan |
-refresh-only | non | Plan en mode refresh uniquement (ne propose pas de changements) |
-lock=true|false | true | Verrouille le state pendant le plan |
-parallelism=N | 10 | Nombre d’opérations parallèles |
-detailed-exitcode | non | Code de sortie 0=succès sans diff, 1=erreur, 2=succès avec diff |
Exemples
# Plan standard (affiche les changements)
terraform plan
# Sauvegarder le plan pour apply garanti
terraform plan -out=plan.tfplan
# Plan avec fichier de variables
terraform plan -var-file=prod.tfvars
# Plan avec variable inline
terraform plan -var="region=eu-west-1"
# Plan ciblé sur une ressource
terraform plan -target=aws_instance.web
# Plan de destruction
terraform plan -destroy
# Plan de destruction ciblé
terraform plan -destroy -target=aws_instance.web
# Plan refresh-only (voir la dérive sans proposer de changements)
terraform plan -refresh-only
# Plan en CI/CD avec code de sortie différencié
terraform plan -detailed-exitcode -out=plan.tfplan
echo "Exit code: $?" # 0=no changes, 1=error, 2=changes presentLire un plan
Terraform will perform the following actions:
# aws_instance.web will be created
+ resource "aws_instance" "web" { ← + créer
+ ami = "ami-0c55b159cbfafe1f0"
+ instance_type = "t2.micro"
}
# aws_instance.old will be destroyed
- resource "aws_instance" "old" { ← - détruire
- id = "i-0abcd1234567890" -> null
}
# aws_instance.db must be replaced
-/+ resource "aws_instance" "db" { ← -/+ remplacer (destroy + create)
~ instance_type = "t2.micro" -> "t2.small" (forces replacement)
}
# aws_security_group.web will be updated in-place
~ resource "aws_security_group" "web" { ← ~ modifier (in-place)
~ description = "old" -> "new"
}
Plan: 1 to add, 1 to change, 1 to destroy.
En relation avec
- Cycle de vie — Vue d’ensemble — étape 2 du workflow
- terraform apply — applique le plan sauvegardé
- terraform init — prérequis
- terraform validate — valider avant de planifier