Aller au contenu
Infrastructure as Code medium
🔐 Alerte sécurité — Incident supply chain Trivy : lire mon analyse de l'attaque

La CLI Terraform : commandes du quotidien

9 min de lecture

logo terraform

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.

  • 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 console comme REPL interactif
Fenêtre de terminal
# Aide générale
terraform -help
# Aide sur une commande spécifique
terraform init -help
terraform plan -help

Initialise le projet : télécharge les providers, configure le backend.

Fenêtre de terminal
terraform init

Options utiles :

OptionEffet
-upgradeMet à jour les providers vers la dernière version compatible
-reconfigureRé-initialise le backend sans migrer le state
-migrate-stateMigre le state lors d’un changement de backend
-backend=falseInit sans configurer de backend
Fenêtre de terminal
# Mettre à jour les providers
terraform init -upgrade
# Après un changement de backend
terraform init -reconfigure

Vérifie la syntaxe et la cohérence logique de la configuration. Ne contacte pas les APIs des providers.

Fenêtre de terminal
terraform validate

Options :

OptionEffet
-jsonRésultat en JSON (idéal pour CI/CD)
-no-colorDésactive les couleurs
Fenêtre de terminal
# Pour la CI
terraform validate -json | jq '.valid'

Reformate les fichiers .tf selon le format canonique Terraform. Ce format peut évoluer légèrement entre versions mineures.

Fenêtre de terminal
# Reformater tous les fichiers du répertoire courant
terraform fmt
# Reformater récursivement (sous-répertoires inclus)
terraform fmt -recursive
# Vérifier sans modifier (idéal pour CI)
terraform fmt -check -recursive

Calcule et affiche les changements sans les appliquer.

Fenêtre de terminal
terraform plan

Options essentielles :

OptionEffet
-out=FICHIERSauvegarde le plan pour apply garantie
-var="nom=valeur"Passe une variable en ligne de commande
-var-file=FICHIERCharge un fichier de variables
-target=RESOURCELimite le plan à une resource spécifique
-destroyPlanifie une destruction complète
-refresh=falseNe rafraîchit pas le state depuis l’API
-jsonOutput machine-readable (pour automatisation et intégrations CI, pas pour lecture humaine)
Fenêtre de terminal
# Plan ciblé (pour déboguer)
terraform plan -target=libvirt_domain.vm_web
# Plan de destruction
terraform plan -destroy
# Plan sauvegardé pour apply déterministe
terraform plan -out=tfplan && terraform apply tfplan

Applique les changements. Par défaut, demande une confirmation.

Fenêtre de terminal
terraform apply

Options essentielles :

OptionEffet
-auto-approveApplique sans confirmation
-var="nom=valeur"Variable en ligne de commande
-var-file=FICHIERFichier de variables
-target=RESOURCEApplique uniquement une resource
-replace=RESOURCEForce la recréation d’une resource
-refresh=falseN’interroge pas l’API avant apply
Fenêtre de terminal
# Apply sans confirmation (CI/CD)
terraform apply -auto-approve
# Forcer la recréation d'une VM
terraform apply -replace=libvirt_domain.vm_web

Supprime toutes les ressources gérées.

Fenêtre de terminal
terraform destroy
terraform destroy -auto-approve

Équivalent à :

Fenêtre de terminal
terraform apply -destroy -auto-approve

Pour détruire une seule resource :

Fenêtre de terminal
terraform destroy -target=libvirt_volume.disk_test

Affiche les valeurs des outputs définis dans outputs.tf.

Fenêtre de terminal
# Tous les outputs
terraform output
# Un output spécifique
terraform output vm_name
# En JSON (pour scripts)
terraform output -json
terraform output -json vm_name

Affiche de manière lisible un state ou un plan file.

Fenêtre de terminal
# Afficher le dernier snapshot du state
terraform 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 tfplan

Sous-commandes pour inspecter et manipuler le state.

Fenêtre de terminal
# Lister les ressources dans le state
terraform state list
# Afficher une resource spécifique
terraform 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 state
terraform state mv libvirt_domain.vm libvirt_domain.vm_web

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.

Fenêtre de terminal
terraform console

Exemples 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.

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.

Fenêtre de terminal
terraform graph | dot -Tsvg > graph.svg
CommandeFréquenceRôle
terraform initDébut de projet / après ajout providerInitialiser
terraform fmtAvant chaque commitFormater
terraform validateAvant chaque commitVérifier la syntaxe
terraform planAvant chaque applyPrévisualiser
terraform applyDéploiementAppliquer
terraform outputAprès applyLire les valeurs
terraform showDébogageLire le state ou un plan file
terraform state listDébogageLister les ressources
terraform destroyNettoyage / labSupprimer tout
terraform consoleDéveloppementTester des expressions
  • init est toujours la première étape dans un nouveau projet.
  • fmt -check en CI garantit un style homogène.
  • plan -out=tfplan puis apply tfplan est le pattern déterministe pour la production.
  • console est le meilleur outil pour déboguer des expressions HCL.
  • Ne manipulez state mv et state rm qu’avec une sauvegarde en main.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn