
Terraform s’utilise exclusivement en ligne de commande : une dizaine de
commandes couvre 90 % du quotidien. Cette page de référence les détaille
toutes avec leurs options essentielles et des exemples concrets. Que vous
débutiez avec terraform init ou cherchiez les options de terraform state,
vous trouverez ici ce qu’il faut sans parcourir la documentation officielle
commande par commande.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Les commandes du cycle quotidien :
init,fmt,validate,plan,apply,destroy - Les options clés :
-out,-target,-var,-var-file,-auto-approve - Inspecter le state :
state list,state show,show,output - Déboguer des expressions : utiliser
terraform consolecomme REPL interactif
Aide et navigation
Section intitulée « Aide et navigation »# Aide généraleterraform -help
# Aide sur une commande spécifiqueterraform init -helpterraform plan -helpterraform init
Section intitulée « terraform init »Initialise le projet : télécharge les providers, configure le backend.
terraform initOptions utiles :
| Option | Effet |
|---|---|
-upgrade | Met à jour les providers vers la dernière version compatible |
-reconfigure | Ré-initialise le backend sans migrer le state |
-migrate-state | Migre le state lors d’un changement de backend |
-backend=false | Init sans configurer de backend |
# Mettre à jour les providersterraform init -upgrade
# Après un changement de backendterraform init -reconfigureterraform validate
Section intitulée « terraform validate »Vérifie la syntaxe et la cohérence logique de la configuration. Ne contacte pas les APIs des providers.
terraform validateOptions :
| Option | Effet |
|---|---|
-json | Résultat en JSON (idéal pour CI/CD) |
-no-color | Désactive les couleurs |
# Pour la CIterraform validate -json | jq '.valid'terraform fmt
Section intitulée « terraform fmt »Reformate les fichiers .tf selon le format canonique Terraform. Ce
format peut évoluer légèrement entre versions mineures.
# Reformater tous les fichiers du répertoire courantterraform fmt
# Reformater récursivement (sous-répertoires inclus)terraform fmt -recursive
# Vérifier sans modifier (idéal pour CI)terraform fmt -check -recursiveterraform plan
Section intitulée « terraform plan »Calcule et affiche les changements sans les appliquer.
terraform planOptions essentielles :
| Option | Effet |
|---|---|
-out=FICHIER | Sauvegarde le plan pour apply garantie |
-var="nom=valeur" | Passe une variable en ligne de commande |
-var-file=FICHIER | Charge un fichier de variables |
-target=RESOURCE | Limite le plan à une resource spécifique |
-destroy | Planifie une destruction complète |
-refresh=false | Ne rafraîchit pas le state depuis l’API |
-json | Output machine-readable (pour automatisation et intégrations CI, pas pour lecture humaine) |
# Plan ciblé (pour déboguer)terraform plan -target=libvirt_domain.vm_web
# Plan de destructionterraform plan -destroy
# Plan sauvegardé pour apply déterministeterraform plan -out=tfplan && terraform apply tfplanterraform apply
Section intitulée « terraform apply »Applique les changements. Par défaut, demande une confirmation.
terraform applyOptions essentielles :
| Option | Effet |
|---|---|
-auto-approve | Applique sans confirmation |
-var="nom=valeur" | Variable en ligne de commande |
-var-file=FICHIER | Fichier de variables |
-target=RESOURCE | Applique uniquement une resource |
-replace=RESOURCE | Force la recréation d’une resource |
-refresh=false | N’interroge pas l’API avant apply |
# Apply sans confirmation (CI/CD)terraform apply -auto-approve
# Forcer la recréation d'une VMterraform apply -replace=libvirt_domain.vm_webterraform destroy
Section intitulée « terraform destroy »Supprime toutes les ressources gérées.
terraform destroyterraform destroy -auto-approveÉquivalent à :
terraform apply -destroy -auto-approvePour détruire une seule resource :
terraform destroy -target=libvirt_volume.disk_testterraform output
Section intitulée « terraform output »Affiche les valeurs des outputs définis dans outputs.tf.
# Tous les outputsterraform output
# Un output spécifiqueterraform output vm_name
# En JSON (pour scripts)terraform output -jsonterraform output -json vm_nameterraform show
Section intitulée « terraform show »Affiche de manière lisible un state ou un plan file.
# Afficher le dernier snapshot du stateterraform show
# Afficher un plan file sauvegardéterraform show tfplan
# En JSON (attention : les valeurs sensibles sont affichées en clair)terraform show -json | jq .terraform show -json tfplanterraform state
Section intitulée « terraform state »Sous-commandes pour inspecter et manipuler le state.
# Lister les ressources dans le stateterraform state list
# Afficher une resource spécifiqueterraform state show libvirt_domain.vm_web
# Retirer une resource du state (sans la détruire)terraform state rm libvirt_volume.disk_old
# Renommer une resource dans le stateterraform state mv libvirt_domain.vm libvirt_domain.vm_webterraform console
Section intitulée « terraform console »REPL interactif pour tester des expressions Terraform sans modifier l’infrastructure. La console peut accéder aux valeurs présentes dans le state et prend un verrou sur le state pendant toute la session.
terraform consoleExemples dans le REPL :
> max(5, 12, 9)12
> format("vm-%03d", 7)"vm-007"
> length(["a", "b", "c"])3
> var.environment == "prod" ? "t3.large" : "t3.small""t3.small"Très utile pour déboguer des expressions complexes ou tester des fonctions.
terraform graph
Section intitulée « terraform graph »Génère une représentation visuelle d’une configuration ou d’un plan d’exécution au format DOT (Graphviz). Par défaut, affiche une vue simplifiée des dépendances entre ressources et data sources.
terraform graph | dot -Tsvg > graph.svgRésumé des commandes essentielles
Section intitulée « Résumé des commandes essentielles »| Commande | Fréquence | Rôle |
|---|---|---|
terraform init | Début de projet / après ajout provider | Initialiser |
terraform fmt | Avant chaque commit | Formater |
terraform validate | Avant chaque commit | Vérifier la syntaxe |
terraform plan | Avant chaque apply | Prévisualiser |
terraform apply | Déploiement | Appliquer |
terraform output | Après apply | Lire les valeurs |
terraform show | Débogage | Lire le state ou un plan file |
terraform state list | Débogage | Lister les ressources |
terraform destroy | Nettoyage / lab | Supprimer tout |
terraform console | Développement | Tester des expressions |
À retenir
Section intitulée « À retenir »initest toujours la première étape dans un nouveau projet.fmt -checken CI garantit un style homogène.plan -out=tfplanpuisapply tfplanest le pattern déterministe pour la production.consoleest le meilleur outil pour déboguer des expressions HCL.- Ne manipulez
state mvetstate rmqu’avec une sauvegarde en main.