RousselTMLEARNING

Article · Terraform : de la découverte à l'expertise

Tester et sécuriser

1. Analyse statique #

Avant même le plan.

Outils #

Contrôles de qualité Terraform
Aucun de ces contrôles n'a besoin d'identifiants cloud, sauf les politiques sur un plan réel.
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.

📄 Tester et sécuriser Terraform : validate, terraform test, tflint, Checkov et politiques →

Mon suivi

  • ⏱ Durée estimée : ≈ 7 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

💬 Poser une question

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...

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 !