terraform taint / terraform untaint
Marque (ou démarque) une ressource comme dégradée dans le state, ce qui force sa recréation complète au prochain terraform apply.
Commandes déconseillées depuis Terraform 0.15.2 — toujours fonctionnelles mais remplacées par l’option
-replacedeplan/apply, plus sûre car elle intègre une prévisualisation avant l’action.
Syntaxe
terraform taint ADRESSE_RESSOURCE
terraform untaint ADRESSE_RESSOURCEExemples
# Marquer une ressource pour recréation
terraform taint aws_instance.web
# Marquer une ressource dans un module
terraform taint module.servers.aws_instance.web
# Marquer une ressource indexée (count)
terraform taint 'aws_instance.web[0]'
# Marquer une ressource indexée (for_each)
terraform taint 'aws_instance.web["prod"]'
# Annuler le marquage
terraform untaint aws_instance.web
# Vérifier qu'une ressource est bien marquée
terraform state show aws_instance.web # chercher "status = tainted"⚠️ Pourquoi c’est déconseillé
terraform taint modifie directement le state sans montrer de plan ni demander de confirmation :
terraform taint aws_instance.web→ écrit"status": "tainted"dans le stateterraform apply→ recrée la ressource taintée
Le problème : entre le taint et le apply, quelqu’un d’autre peut lancer un apply et déclencher involontairement la recréation.
✅ Équivalent moderne : -replace
# Voir le plan de recréation avant de confirmer
terraform plan -replace="aws_instance.web"
# Exemple de sortie :
# -/+ aws_instance.web (tainted)
# ami = "ami-0c55b159cbfafe1f0"
# ...
# Plan: 1 to add, 0 to change, 1 to destroy.
# Appliquer la recréation
terraform apply -replace="aws_instance.web"
# Recréer plusieurs ressources en une seule commande
terraform apply \
-replace="aws_instance.web" \
-replace="aws_security_group.web"
# Combiner avec d'autres changements normaux
terraform apply -replace="aws_instance.web"
# Terraform applique TOUT : les changements normaux + la recréation forcéeAvantages :
- La recréation est visible dans le plan avec le symbole
-/+ - Une seule commande remplace le workflow
taint → apply - Peut être combiné avec d’autres modifications dans le même
apply - Pas de modification préalable du state
En relation avec
- Cycle de vie — Vue d’ensemble — hub du workflow
- terraform apply — option
-replace - terraform plan — option
-replace - terraform state —
state showpour vérifier le statut tainted - Commandes déconseillées — contexte de la dépréciation