Le state Terraform : le fichier qui peut ruiner ta journée

Pourquoi le state Terraform est aussi critique, comment le sécuriser avec un backend distant et du verrouillage, et les erreurs à ne jamais commettre.

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

  1. Éditer le state à la main. Si tu dois le manipuler, passe par terraform state mv / rm, jamais par un éditeur de texte.
  2. Partager un seul state géant. Découpe par périmètre (réseau, data, apps) pour limiter le rayon d’explosion.
  3. Oublier les sauvegardes / le versioning. Active le versioning du bucket : un apply malheureux se récupère.

Bien géré, le state devient un non-sujet. Mal géré, c’est la panne du vendredi soir.