RousselTMLEARNING

Automatisation

L'état Terraform : backends distants, verrouillage, import et refactorisation

Gérer l'état Terraform : rôle du fichier d'état, données sensibles, backends distants (S3, azurerm, gcs, HCP Terraform), verrouillage, commandes state, import de ressources existantes, blocs moved et removed, dérive et refresh.

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 #

Backend distant
Depuis Terraform 1.10, le backend S3 sait verrouiller sans DynamoDB (use_lockfile).
terraform {
  backend "s3" {
    bucket       = "etat-terraform-123"
    key          = "reseau/prod.tfstate"
    region       = "eu-west-3"
    encrypt      = true
    use_lockfile = true
  }
}
BackendVerrouillage
s3Fichier de verrou (ou DynamoDB, historique)
azurermBail sur le blob
gcsNatif
HCP TerraformNatif, 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.

Articles liés

Terraform : principes, architecture et flux de travail

Comprendre Terraform : infrastructure as code déclarative, architecture (cœur, fournisseurs, état), flux init…

Le langage HCL : ressources, variables, sorties, données et expressions

Écrire du Terraform : blocs terraform, provider, resource et data, variables typées avec validation, locals, …

Les modules Terraform : concevoir, versionner et réutiliser

Structurer Terraform avec des modules : module racine et modules enfants, entrées et sorties, sources (local,…

Pour aller plus loin

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !