Valide la syntaxe et la cohérence logique des fichiers Terraform sans accéder à l’infrastructure ni au backend.

Différent de terraform plan : validate vérifie la syntaxe HCL, les types et les références internes. Il ne consulte pas les APIs cloud.


Options principales

OptionDéfautDescription
-backend=true|falsetrueValide aussi la configuration backend (nécessite des credentials)
-jsonnonSortie en JSON (pour parsing en CI)

Exemples

# Validation simple
terraform validate
 
# Validation sans accès au backend (pas de credentials requis)
terraform validate -backend=false
 
# Sortie JSON pour parsing CI
terraform validate -json

Sortie JSON :

{
  "valid": true,
  "error_count": 0,
  "warning_count": 0,
  "diagnostics": []
}

Ce que validate vérifie

✅ Vérifié :
  - Syntaxe HCL valide
  - Types des attributs corrects (string, number, bool, list, map)
  - Références à des ressources existantes dans la configuration
  - Bloc requis présents (required_providers, etc.)
  - Expressions valides

❌ Non vérifié :
  - Existence des ressources dans l'infrastructure réelle
  - Validité des valeurs (AMI existante, région valide, etc.)
  - Accès au backend
  - Variables non définies (si passées en dehors de .tf)

-backend=false — cas d’usage clé

Voir Backend — Configuration et option pour le détail, mais en résumé :

# Sans -backend=false : Terraform tente de se connecter au backend
# → Erreur si pas de credentials AWS/GCP/Azure disponibles
 
# Avec -backend=false : validation syntaxique pure
# → Parfait pour la CI sans credentials, le dev local, les tests de modules
 
terraform validate -backend=false   # ← recommandé en CI pour les checks rapides
terraform plan                      # ← pour la validation complète avec credentials

Workflow qualité recommandé

# 1. Formater
terraform fmt -check -recursive
 
# 2. Valider (syntaxe, sans backend)
terraform validate -backend=false
 
# 3. Plan (validation complète avec credentials)
terraform plan -out=plan.tfplan
 
# 4. Apply
terraform apply plan.tfplan

En relation avec