Terraform · Bonnes pratiques

Bonnes pratiques et Troubleshooting

Diagnostiquez méthodiquement les erreurs Terraform et appliquez des garde-fous adaptés aux environnements de production.

Leçon disponible
20 min

Objectifs

  • Suivre une séquence de diagnostic reproductible.
  • Reconnaître les erreurs de provider, variables, state, backend et HCL.
  • Intégrer revue, moindre privilège et hygiène Git.
  • Éviter les réparations directes et improvisées du state.

Une méthode de diagnostic avant toute correction

Une erreur Terraform décrit souvent la phase concernée, l’adresse de resource et un message provenant du provider. Commencez par lire ces éléments sans chercher immédiatement à contourner le contrôle.

En production, une correction technique doit aussi préserver le state, les accès, la disponibilité et la traçabilité. Replanifiez toujours après avoir corrigé la cause.

La séquence de diagnostic

Procédez du contrôle le plus local vers les dépendances distantes, puis revenez à un plan relu. Cette méthode réduit les actions hasardeuses.

  • 1. Lire précisément l’erreur, l’adresse et la phase concernée.
  • 2. Vérifier le format et la cohérence avec fmt -check et validate.
  • 3. Vérifier init, les sources et les versions avec providers.
  • 4. Contrôler les variables obligatoires et leurs sources.
  • 5. Vérifier l’identité, les permissions et le contexte d’authentification.
  • 6. Vérifier l’accès au backend, le locking et le state attendu.
  • 7. Lancer plan sans appliquer.
  • 8. Analyser créations, modifications, remplacements et suppressions.
  • 9. Corriger la cause, sans modifier directement le state.
  • 10. Replanifier et faire relire avant apply.
Commandes de diagnostic sûres à adapter au contexte
terraform version
terraform fmt -check
terraform validate
terraform providers
terraform state list
terraform show
terraform plan

Problèmes fréquents et première vérification

Classez le problème avant d’agir. Une erreur d’authentification n’appelle pas la même correction qu’une référence HCL invalide ou qu’un lock de state actif.

  • terraform init nécessaire : initialiser le backend, les modules et les providers.
  • Provider indisponible ou incompatible : vérifier source, contraintes et lock file.
  • Credential/authentication error : vérifier l’identité externe et ses permissions.
  • Variable obligatoire manquante : vérifier déclaration et sources de valeurs.
  • Resource already exists : décider d’un import ou d’une autre propriété, sans forcer aveuglément.
  • State lock : identifier le run détenteur ; ne jamais forcer le déverrouillage d’un run actif.
  • Drift : comparer réalité, configuration et plan avant de réconcilier.
  • Mauvaise référence : vérifier type, nom local, index et attribut.
  • Backend inaccessible : vérifier réseau, identité, droits et configuration du backend.
  • Syntaxe HCL : exécuter fmt -check et validate, puis lire la ligne signalée.

Sécurité, Git et revue

Les fichiers Terraform sont du code de production : appliquez revue, historique, tests, versions maîtrisées et séparation des responsabilités. Évitez les changements manuels hors Terraform lorsqu’ils ne sont pas nécessaires, car ils créent du drift.

  • Ne hardcodez aucun secret et utilisez des identités au moindre privilège.
  • Protégez le state, le backend, les plans sauvegardés et les logs CI.
  • Versionnez les contraintes et .terraform.lock.hcl avec une politique de mise à jour.
  • N’appliquez qu’un plan relu dans le bon compte, workspace et environnement.
  • N’ignorez jamais un avertissement de suppression ou de remplacement.
.gitignore Terraform à adapter au dépôt
.terraform/
*.tfstate
*.tfstate.*
crash.log
*.tfplan
*.auto.tfvars

Ne supprimez aucun fichier automatiquement. Adaptez les motifs au dépôt, gardez les fichiers de valeurs non secrets explicitement approuvés et versionnez généralement .terraform.lock.hcl.

Mini résumé

  • Lire l’erreur et valider localement précède toute action distante.
  • Provider, variables, authentification, backend et state se vérifient séparément.
  • La sécurité couvre secrets, permissions, state, plans et historique Git.
  • Après correction, un nouveau plan doit être analysé avant apply.

Outils associés

Générer une configuration HCL

Utilisez Terraform HCL Generator pour préparer localement une base AWS, Azure, GCP ou Docker, puis relisez-la avant utilisation.

Ouvrir l’outil

Construire une commande Terraform

Utilisez Terraform Command Builder pour composer une commande, comprendre ses options et visualiser son niveau de risque sans l’exécuter.

Ouvrir l’outil

Mini quiz

Trois questions pour vérifier les notions essentielles de la leçon.

1. Quelle est la première étape face à une erreur Terraform ?
2. Que faire devant un state lock ?
3. Quel fichier faut-il généralement conserver dans Git ?