L'état, cœur de l'IaC
Pourquoi Terraform tient un fichier d'état, et ce qui casse sans lui.
Un script bash d'installation est impératif : il décrit des étapes. Le
rejouer deux fois donne rarement le même résultat — la deuxième exécution
échoue, ou duplique. Un fichier Terraform est déclaratif : il décrit un
résultat voulu, et l'outil calcule les étapes pour y parvenir.
Pour faire cette différence, l'outil doit répondre à une question : qu'ai-je déjà créé ? C'est le rôle du fichier d'état.
$ terraform plan
No changes. Your infrastructure matches the configuration.Cette phrase n'est possible que parce que l'état associe chaque ressource déclarée à son identifiant réel chez le fournisseur.
Le triangle que compare l'outil
| Source | Ce que c'est |
|---|---|
| Le code | ce que tu veux |
| L'état | ce que Terraform croit avoir créé |
| Le réel | ce qui existe chez le fournisseur |
Un plan compare les trois. Quand le réel s'écarte du code sans que le code ait
changé — quelqu'un a modifié une règle à la main dans la console web — on parle
de dérive de configuration. Le plan suivant propose de la corriger, ce qui
peut surprendre celui qui avait fait la modification manuelle.
L'état contient en clair des valeurs sensibles : mots de passe générés, clés,
adresses privées. Ce n'est pas un fichier de travail anodin. Il ne va jamais
dans git — il va dans un backend distant, chiffré et verrouillé, sinon
deux apply simultanés le corrompent.
Les pièges classiques
Supprimer une ressource du code ne la « libère » pas : au prochain apply,
Terraform la détruit, puisqu'elle est dans l'état mais plus dans le code.
Pour la sortir de sa gestion sans y toucher, c'est terraform state rm.
À l'inverse, une ressource créée à la main n'existe pas pour l'outil. La déclarer sans plus tarder mène à une erreur « already exists » : il faut d'abord l'importer dans l'état.
Réponse unique
Tu retires une ressource de ton code Terraform, puis tu lances `apply`. Que se passe-t-il ?
Indice · Le code décrit le résultat voulu. Que devient ce qui n'y figure plus ?
[ METTRE EN PRATIQUE ]
Observer une dérive de configuration
3 étapes · 25 min · 120 XP
[ CETTE LEÇON DANS LES PARCOURS ]