Détruit toute l’infrastructure gérée par Terraform dans le répertoire courant.

Équivalent de terraform apply -destroy. Irréversible — toujours vérifier le plan avant.


Options principales

OptionDéfautDescription
-auto-approvenonDétruit sans demander de confirmation
-target=RESSOURCEtoutesDétruit uniquement une ressource spécifique
-var="key=value"aucuneVariable inline
-var-file=FICHIERterraform.tfvarsFichier de variables
-parallelism=N10Opérations simultanées
-lock=true|falsetrueVerrouille le state

Exemples

# Destruction interactive (demande confirmation + affiche le plan)
terraform destroy
 
# Destruction automatique (CI/CD ou environnements éphémères)
terraform destroy -auto-approve
 
# Détruire une seule ressource
terraform destroy -target=aws_instance.web
 
# Détruire avec variables
terraform destroy -var-file=staging.tfvars -auto-approve
 
# Voir ce qui sera détruit sans rien faire
terraform plan -destroy

Ordre de destruction

Terraform respecte le graphe de dépendances en sens inverse :

Infrastructure créée dans l'ordre :
  1. aws_vpc.main
  2. aws_subnet.public  (dépend du VPC)
  3. aws_instance.web   (dépend du subnet)

Destruction dans l'ordre inverse :
  1. aws_instance.web   ← détruit en premier
  2. aws_subnet.public
  3. aws_vpc.main        ← détruit en dernier

Cas d’usage

# Nettoyage d'un environnement de test après CI
terraform destroy -auto-approve -var-file=test.tfvars
 
# Destruction partielle (debug, refactoring)
terraform destroy -target=module.legacy
 
# Prévisualiser avant de détruire
terraform plan -destroy -out=destroy.tfplan
terraform show destroy.tfplan   # inspecter
terraform apply destroy.tfplan  # appliquer la destruction

⚠️ Précautions

# Vérifier ce qui sera détruit AVANT
terraform plan -destroy
 
# Protéger des ressources critiques contre la destruction accidentelle
# Dans votre .tf :
resource "aws_rds_instance" "prod" {
  lifecycle {
    prevent_destroy = true   # terraform destroy → erreur
  }
}

En relation avec