1. À quoi sert l'état #
La mémoire de Terraform.
Principe #
Le fichier d'état associe chaque ressource du code à un objet réel (identifiant, attributs). Sans lui, Terraform ne saurait pas ce qu'il gère. Il peut contenir des secrets (mots de passe générés, clés) : il doit être chiffré et son accès restreint.
Erreur Courante : Ne modifiez jamais le fichier d'état à la main et ne le versionnez pas dans Git.
2. Backends distants #
Partager et verrouiller.
Configuration #
terraform {
backend "s3" {
bucket = "etat-terraform-123"
key = "reseau/prod.tfstate"
region = "eu-west-3"
encrypt = true
use_lockfile = true
}
}| Backend | Verrouillage |
|---|---|
| s3 | Fichier de verrou (ou DynamoDB, historique) |
| azurerm | Bail sur le blob |
| gcs | Natif |
| HCP Terraform | Natif, avec historique et exécutions distantes |
3. Manipuler l'état #
Importer, déplacer, retirer.
Commandes et blocs #
terraform state list
terraform state show aws_s3_bucket.rapports
terraform plan -refresh-only # détecter la dérive sans rien changer# importer une ressource existante (Terraform 1.5+)
import {
to = aws_s3_bucket.ancien
id = "bucket-cree-a-la-main"
}
# renommer sans détruire
moved {
from = aws_s3_bucket.rapports
to = module.stockage.aws_s3_bucket.rapports
}
# ne plus gérer sans supprimer (Terraform 1.7+)
removed {
from = aws_instance.historique
lifecycle { destroy = false }
}Bonne Pratique : terraform plan -generate-config-out=import.tf génère le code des ressources importées : il reste à le relire et le nettoyer.
