Le terraform.tfstate est la mémoire de ton infrastructure. Le perdre ou le
corrompre, c’est perdre le lien entre ton code et le réel. Traite-le en conséquence.
Pourquoi il est si sensible
Le state contient le mapping entre tes ressources déclarées et les ressources réelles chez ton fournisseur cloud, y compris des secrets en clair (mots de passe générés, clés, etc.). Deux conséquences immédiates :
- Il ne doit jamais finir dans Git.
- Il doit être chiffré au repos.
Le backend distant, non négociable
Oublie le state local dès que vous êtes plus d’une personne. Un backend distant
centralise le fichier et gère le verrouillage pour éviter deux apply
simultanés qui se marchent dessus.
terraform {
backend "s3" {
bucket = "mon-org-tfstate"
key = "prod/network.tfstate"
region = "eu-west-3"
encrypt = true
use_lockfile = true
}
}
Le verrouillage natif via fichier sur S3 (use_lockfile) évite la dépendance à une
table externe pour les nouveaux projets.
Trois erreurs à ne jamais commettre
- Éditer le state à la main. Si tu dois le manipuler, passe par
terraform state mv/rm, jamais par un éditeur de texte. - Partager un seul state géant. Découpe par périmètre (réseau, data, apps) pour limiter le rayon d’explosion.
- Oublier les sauvegardes / le versioning. Active le versioning du bucket : un
applymalheureux se récupère.
Bien géré, le state devient un non-sujet. Mal géré, c’est la panne du vendredi soir.