CaenHackYouAcademy
Infrastructure as Code

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

SourceCe que c'est
Le codece que tu veux
L'étatce que Terraform croit avoir créé
Le réelce 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.

VérificationQuestion 1 / 3

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 ?

On this page