Synchronise le fichier de state avec l’état réel de l’infrastructure, sans créer ni détruire de ressources.

Commande déconseillée depuis Terraform 0.15.4 — elle est toujours fonctionnelle mais remplacée par le mode -refresh-only de plan/apply, plus sûr car il demande une confirmation avant d’écrire dans le state.


Options principales

OptionDescription
-target=RESSOURCERafraîchir une ressource spécifique uniquement
-var="key=value"Passer une variable inline
-var-file=FICHIERFichier de variables
-lock=falseDésactiver le verrouillage (dangereux)
-compact-warningsRéduire les avertissements

Exemples

# Synchroniser tout le state avec l'infrastructure réelle
terraform refresh
 
# Rafraîchir une seule ressource
terraform refresh -target=aws_instance.web
 
# Avec des variables
terraform refresh -var="env=prod"

⚠️ Pourquoi c’est déconseillé

terraform refresh écrit directement dans le state sans montrer de plan ni demander de confirmation :

infrastructure réelle → state   (écriture directe, sans validation)

Si l’infrastructure a divergé de manière inattendue (ressource supprimée manuellement, attribut modifié), le state est mis à jour immédiatement et sans possibilité de revenir en arrière facilement.


✅ Équivalent moderne : -refresh-only

# Étape 1 : voir ce qui a changé (sans écrire)
terraform plan -refresh-only
 
# Exemple de sortie :
# ~ aws_instance.web will be updated in-place
#   ~ tags = { "Name" = "web" → "web-manual" }
#
# Plan: 0 to add, 1 to change, 0 to destroy.
# Note: The plan only updates Terraform state and will not change real infrastructure.
 
# Étape 2 : confirmer la mise à jour du state
terraform apply -refresh-only
 
# Ou en une seule étape avec auto-approve
terraform apply -refresh-only -auto-approve

Avantages :

  • Le plan est visible avant confirmation
  • Possibilité d’annuler si le diff est inattendu
  • S’intègre naturellement dans le workflow plan → apply

Cas d’usage typiques

# Après des modifications manuelles dans la console AWS/GCP/Azure
terraform plan -refresh-only    # voir les diffs
terraform apply -refresh-only   # mettre le state à jour
 
# Avant un plan pour s'assurer que le state est à jour
terraform plan   # -refresh est activé par défaut dans plan/apply
 
# Désactiver le refresh automatique (plus rapide, moins fiable)
terraform plan -refresh=false

Note : terraform plan et terraform apply font un refresh automatique avant chaque exécution. -refresh-only est donc utile uniquement quand on veut explicitement mettre à jour le state sans appliquer d’autres changements.


En relation avec