La dérive d’infrastructure (configuration drift) est l’ennemi silencieux de l’Infrastructure as Code. Un changement manuel en production, une ressource créée hors Terraform, et votre code ne reflète plus la réalité.
Détecter la dérive automatiquement
La première étape est de détecter la dérive avant qu’elle ne cause des problèmes. terraform plan dans un pipeline CI sans apply est suffisant :
# GitLab CI — job de détection de dérive
drift-check:
schedule: "0 8 * * 1-5" # chaque matin en semaine
script:
- terraform init
- terraform plan -detailed-exitcode -out=plan.tfplan
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"'
allow_failure: false
-detailed-exitcode retourne 0 si aucun changement, 1 si erreur, 2 si des changements sont détectés. Un exit code 2 déclenche une alerte.
Importer les ressources créées manuellement
# Une VM créée manuellement dans AWS
terraform import aws_instance.web i-0abc123def456789
# Depuis Terraform 1.5 : import déclaratif dans le code
import {
to = aws_instance.web
id = "i-0abc123def456789"
}
Une fois importée, la ressource est gérée par Terraform — plus de dérive possible.
Moved blocks : refactorer sans recréer
# Renommer une ressource sans la détruire et recréer
moved {
from = aws_s3_bucket.logs
to = aws_s3_bucket.application_logs
}
Sans moved, Terraform détruirait l’ancienne ressource et en créerait une nouvelle — catastrophique pour un bucket S3 de logs en production.
Notre formation Terraform couvre la gestion de l’état et les stratégies de migration.