1. Analyse statique #
Avant même le plan.
Outils #
terraform fmt -check -recursive
terraform validate
tflint --init && tflint --recursive
checkov -d . # ou : trivy config .2. Tests natifs #
terraform test.
Exemple #
# tests/app.tftest.hcl
mock_provider "aws" {
mock_resource "aws_instance" { defaults = { id = "i-0123456789" } }
}
variables { environnement = "recette" }
run "une_seule_instance_en_recette" {
command = plan
assert {
condition = length(aws_instance.web) == 1
error_message = "Une instance en recette."
}
}
run "refuse_un_environnement_inconnu" {
command = plan
variables { environnement = "demo" }
expect_failures = [var.environnement]
}Tests réels : Les tests peuvent aussi s'exécuter contre un émulateur (LocalStack) ou un vrai compte de test avec command = apply : ils créent puis détruisent les ressources.
3. Garde-fous dans le code #
Préconditions, check, secrets.
Exemples #
resource "aws_instance" "web" {
instance_type = var.type
lifecycle {
precondition {
condition = !startswith(var.type, "p5")
error_message = "Pas d'instance GPU coûteuse ici."
}
}
}
check "site_repond" {
data "http" "accueil" { url = "https://${aws_lb.web.dns_name}/healthz" }
assert {
condition = data.http.accueil.status_code == 200
error_message = "Le site ne répond pas."
}
}- Variables sensibles marquées
sensitive = true; valeurs fournies par la CI ou un coffre (Vault, gestionnaire de secrets), jamais dans le code. - Terraform 1.10+ : valeurs éphémères (
ephemeral) qui ne sont jamais écrites dans l'état.
Mon suivi
Connectez-vous pour suivre votre progression et prendre des notes. Se connecter
Articles recommandés
Le langage HCL : ressources, variables, sorties, données et expressions
Écrire du Terraform : blocs terraform, provider, resource et data, variables typées avec validati...
Terraform en CI/CD : pipelines, revue du plan, OIDC et GitOps
Automatiser Terraform : pipeline plan sur demande de fusion et apply après approbation, publicati...
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, azurer...
Terraform : principes, architecture et flux de travail
Comprendre Terraform : infrastructure as code déclarative, architecture (cœur, fournisseurs, état...
Terraform sur plusieurs clouds : AWS, Azure, Google Cloud, OVHcloud et Kubernetes
Utiliser Terraform avec les principaux fournisseurs : aws, azurerm, google, ovh et openstack, kub...
Bonnes pratiques Terraform : structure, état, sécurité, revue et maintenance
Les bonnes pratiques Terraform en équipe : structure des dépôts, nommage, versions épinglées, éta...
Les modules Terraform : concevoir, versionner et réutiliser
Structurer Terraform avec des modules : module racine et modules enfants, entrées et sorties, sou...
Terraform multi-environnements, workspaces et organisation des dépôts
Organiser Terraform pour plusieurs environnements : dossiers par environnement, fichiers tfvars, ...
Préparer la certification HashiCorp Certified: Terraform Associate
Guide de préparation au Terraform Associate : format, objectifs officiels (concepts de l'IaC, flu...