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.
terraform version
terraform fmt -check
terraform validate
terraform providers
terraform state list
terraform show
terraform planProblè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.
.terraform/
*.tfstate
*.tfstate.*
crash.log
*.tfplan
*.auto.tfvarsNe 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.
Erreur critique : réparer le symptôme en manipulant le state
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’outilConstruire 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’outilMini quiz
Trois questions pour vérifier les notions essentielles de la leçon.