Terraform · State

Terraform State

Comprenez et protégez le state, puis utilisez les commandes d’inspection et de déplacement avec le niveau de prudence adapté.

Leçon disponible
20 min

Objectifs

  • Expliquer le rôle de terraform.tfstate.
  • Distinguer state local, remote state, backend et locking.
  • Inspecter le state sans le modifier manuellement.
  • Traiter state mv et state rm comme des opérations sensibles.

Le mapping entre configuration et infrastructure

Terraform utilise le state pour mémoriser le mapping entre une adresse de configuration et un objet distant. Sans ce lien, il ne pourrait pas déterminer correctement ce qu’il doit créer, mettre à jour ou détruire.

Le state peut contenir des identifiants, attributs et données sensibles. Même lorsqu’une sortie est marquée sensitive, sa valeur peut rester dans le state : ce fichier doit être protégé comme une donnée sensible.

State local, remote state et backend

Par défaut, Terraform écrit terraform.tfstate localement. Un backend définit où le state est stocké et peut fournir des capacités comme le locking. En équipe, un backend distant sécurisé réduit les copies concurrentes et centralise les contrôles.

  • Ne committez pas terraform.tfstate ni ses sauvegardes dans Git.
  • Choisissez un backend avec contrôle d’accès, chiffrement, sauvegarde et versioning adaptés.
  • Activez le locking lorsqu’il est disponible pour éviter des écritures concurrentes.
  • Accordez l’accès au backend selon le principe du moindre privilège.

Inspecter avant d’agir

Les commandes list et show permettent de comprendre ce que Terraform suit. Elles peuvent toutefois afficher des attributs sensibles : contrôlez le terminal, les logs et les artefacts CI.

Commandes d’inspection
terraform state list
terraform state show <address>
terraform show

state mv et state rm : opérations à préparer

terraform state mv déplace une adresse dans le state, par exemple lors d’un refactoring maîtrisé. terraform state rm arrête le suivi d’un objet sans le détruire. Une erreur peut désynchroniser la configuration et l’infrastructure ou conduire Terraform à proposer une recréation.

Syntaxes à étudier, ne pas exécuter sans procédure validée
terraform state mv <source-address> <destination-address>
terraform state rm <address>

Avant toute mutation du state : comprendre la cause, stopper les runs concurrents, sauvegarder de façon sécurisée, vérifier les adresses, faire relire la procédure et exécuter dans le bon backend. Ne modifiez jamais terraform.tfstate à la main.

Mini résumé

  • Le state relie les adresses Terraform aux objets réels.
  • Un backend distant sécurisé facilite le travail en équipe.
  • Le locking limite les écritures concurrentes lorsqu’il est pris en charge.
  • state mv et state rm ne sont jamais des commandes de dépannage banales.

Outils associés

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. Quel est le rôle principal du state ?
2. Quelle pratique convient au state d’une équipe ?
3. Que fait terraform state rm ?