DevOps Elastic Hayway
Document

SUBSCRIBE TO GET FULL ACCESS TO THE E-BOOKS FOR FREE 🎁SUBSCRIBE NOW

Professional Dropdown with Icon

SUBSCRIBE NOW TO GET FREE ACCESS TO EBOOKS

TerraformLesson 1 / 2410 min readUpdated September 13, 2026

Découvrir Terraform : Infrastructure as Code déclarative

À la fin de ce tutoriel, vous saurez ce qu’est Terraform, pourquoi l’Infrastructure as Code (IaC) déclarative change la gestion du cloud, quels concepts retenir (HCL, providers, state, plan/apply), et comment la série P2 s’articule en 22 étapes.

Niveau : Débutant · Temps estimé : 25–35 min · Versions testées : Terraform 1.9+, AWS provider 5.x · Dernière vérification : 2026-09-10

Slug proposé : terraform-overview · Série : Terraform · Remplace / fusionne : #1597

Prérequis

  • Avoir suivi (ou parcouru) le hub AWS : compte sécurisé, utilisateur IAM quotidien, CLI configurée
  • Un terminal (bash, zsh ou PowerShell) et un éditeur de texte
  • Aucune installation Terraform n’est exigée ici (le tuto Install suit)
  • Notions de base : fichier de config, terminal, Region AWS

Coût estimé : 0 € — hub conceptuel. Les labs suivants créeront des ressources AWS ; gardez une alerte de budget active.

Ce que nous allons construire

Comprendre Terraform (hub P2)
  ├── Problème : clic console vs IaC
  ├── 4 idées : déclaratif, plan, graphe, providers
  ├── Comparaison courte (scripts / CloudFormation / Pulumi)
  ├── Anatomie d’un projet (.tf + state)
  ├── Mini config HCL (S3) commentée
  ├── Workflow aperçu : init → plan → apply → destroy
  └── Carte des 22 tutos de la série

(Schéma à remplacer par une image locale Excalidraw / draw.io, alt : « Vue d’ensemble Terraform : IaC déclarative, state, providers et workflow ».)

Ce hub remplace le post #1597 (anglais marketing HashiCorp, Elementor, ~134 mots) par un contenu original, pédagogique, en français.

Étape 1 — Pourquoi l’IaC (le problème du clic console)

Créer un bucket S3, un VPC ou un ALB à la main dans la console fonctionne… jusqu’au moment où il faut reproduire l’environnement, le documenter, l’auditer, ou le reconstruire après incident.

Le clic console pose quatre problèmes :

  1. Non reproductible — personne ne se souvient de tous les réglages trois mois plus tard.
  2. Difficile à revoir — pas de pull request sur un clic.
  3. Dérive (drift) — la réalité cloud s’éloigne de ce que l’équipe croit avoir déployé.
  4. Lent à scaler — 1 Region → OK ; 3 comptes × 2 Regions → cauchemar.

L’Infrastructure as Code décrit l’infra dans des fichiers versionnés (Git). Terraform est un outil d’IaC déclaratif : vous déclarez l’état désiré ; Terraform calcule et applique les changements.

Étape 2 — Terraform en 4 idées

Idée En une phrase
Déclaratif Vous décrivez ce que vous voulez (resource "aws_s3_bucket" …), pas comment appeler chaque API.
Plan terraform plan montre le delta (create / update / destroy) avant de toucher au cloud.
Graphe / dépendances Terraform ordonne les créations (subnet après VPC) via le graphe de ressources.
Providers Plugins par plateforme (AWS, Azure, Kubernetes…). Un même workflow, des API différentes.

Terraform lit du HCL, maintient un state (local ou distant) qui mappe ressources logiques ↔ IDs réels, puis propose un plan avant le apply.

Étape 3 — Terraform vs alternatives (bref, équitable)

Aucun outil n’est « le seul bon ». Choisissez selon le contexte.

Approche Style Forces Limites typiques
Scripts (bash, AWS CLI) Impératif Simple pour une action ponctuelle Peu de plan, idempotence manuelle
CloudFormation Déclaratif AWS-natif Intégré AWS, StackSets YAML/JSON verbeux ; multi-cloud limité
Pulumi Langages généraux (TS, Python…) Boucles et tests familiers Courbe outillage + runtime
Terraform Déclaratif HCL Providers, plan clair, modules, multi-cloud State à bien gérer ; HCL à apprendre

Pour cette série : Terraform ≥ 1.9 + AWS provider 5.x. Objectif : maîtriser le workflow et les patterns utiles en lab.

Étape 4 — Anatomie d’un projet Terraform

mon-lab/
  ├── versions.tf      # required_version + required_providers
  ├── providers.tf     # configuration du provider aws
  ├── main.tf          # resources
  ├── variables.tf     # inputs (optionnel au début)
  ├── outputs.tf       # valeurs exposées
  └── terraform.tfstate  # généré après apply (ne pas committer en clair)

Conventions utiles :

  • Un dossier = un root module (unité init / plan / apply).
  • Les fichiers *.tf sont fusionnés ; découpez pour la lisibilité.
  • Le state est la mémoire de Terraform : sans lui, il ne sait plus ce qu’il gère.
  • En équipe : backend distant (S3 + lock — tuto dédié) ; zéro secret en clair dans Git.

Mise en forme sans toucher au cloud :

terraform fmt -recursive

Étape 5 — Mini configuration HCL commentée

Exemple minimal : un bucket S3, versions épinglées. Lecture et fmt suffisent ici ; l’apply n’est pas obligatoire.

versions.tf :

terraform {
  # Série testée avec Terraform 1.9+
  required_version = ">= 1.9.0"

  required_providers {
    aws = {
      source  = "hashicorp/aws"
      # AWS provider 5.x
      version = "~> 5.0"
    }
  }
}

providers.tf :

provider "aws" {
  # Alignez la Region sur votre profil CLI (ex. eu-west-3)
  region = "eu-west-3"
  # Auth : profil nommé / variables d'environnement / SSO —
  # jamais de access_key en dur dans les .tf
}

main.tf :

resource "aws_s3_bucket" "lab_demo" {
  bucket = "lab-demo-CHANGEZ-MOI-en-suffixe-unique"

  tags = {
    Project = "devopselastichayway"
    Managed = "terraform"
    Stage   = "overview"
  }
}

Lecture rapide :

  • terraform { … } : contraintes d’outil et de providers.
  • provider "aws" : Region et auth implicite.
  • resource "TYPE" "NAME" : TYPE = type provider ; NAME = étiquette locale (aws_s3_bucket.lab_demo).

Quand Terraform sera installé (tuto suivant) :

terraform init      # télécharge le provider aws ~> 5.0
terraform fmt
terraform validate
terraform plan      # aperçu : + create (si credentials OK)
# apply / destroy → détail dans le tuto Workflow

Étape 6 — Le workflow en une page (aperçu)

Commande Rôle
terraform init Prépare le dossier : providers, modules, backend
terraform plan Calcule le diff state ↔ config ; aucune mutation cloud
terraform apply Applique le plan (souvent après confirmation)
terraform destroy Détruit les ressources suivies dans le state

Cycle mental : éditer les .tf → fmt / validate → plan (relire !) → apply → commit Git des .tf (pas du state sensible).

Le state lie aws_s3_bucket.lab_demo à l’ID réel. Une ressource créée à la main reste invisible tant qu’elle n’est pas importée (terraform import — plus tard).

Étape 7 — Carte de la série Terraform (P2, 22 tutos)

  1. Overview (cette page) — IaC, concepts, carte
  2. Install — Linux / Windows / macOS
  3. Workflow — init, plan, apply, destroy
  4. Blocks & language — syntaxe HCL
  5. Providers / resources — profondeur AWS provider
  6. Variables — inputs typés
  7. Locals — valeurs dérivées
  8. Outputs — exposer des résultats
  9. State & backend S3 + lock — state distant
  10. Data sources — lire l’existant
  11. Loops — for_each / count / for
  12. Conditionals — expressions conditionnelles
  13. Dynamic blocks — blocs dynamiques
  14. Modules (1/2) — écrire un module
  15. Modules (2/2) — consommer / registry
  16. Workspaces — isolations légères
  17. Provisioners — et pourquoi les éviter
  18. EBS — volumes
  19. ELB / ALB — équilibrage
  20. IAM — rôles et politiques en HCL
  21. RDS — base managée
  22. VPC (fusion) · Auto Scaling · Route 53 — réseau, scale, DNS

Chaque page garde la même structure (prérequis, étapes, nettoyage, erreurs, quiz).

Étape 8 — Vérification de fin de parcours

  1. Vous expliquez IaC déclarative vs clic console en 30 secondes.
  2. Vous citez les 4 idées : déclaratif, plan, graphe, providers.
  3. Vous situez Terraform face à scripts / CloudFormation / Pulumi sans caricature.
  4. Vous reconnaissez versions.tf, provider, resource, et le rôle du state.
  5. Vous connaissez l’ordre init → plan → apply → destroy.
  6. Prochain tuto : Installer Terraform.

Nettoyage

Rien à détruire dans AWS pour ce hub. Si vous avez quand même fait un apply du bucket démo :

terraform destroy

Vérifiez la console S3 (bonne Region). Ne committez ni *.tfstate ni credentials.

Erreurs fréquentes

Symptôme Cause Correction
Confusion Terraform = CloudFormation Vocabulaire mélangé Terraform = multi-provider ; CloudFormation = service AWS natif
Tout scripter en bash « plus simple » Habitude impérative Bash pour le glue ; infra durable → déclaratif + plan
State commité dans Git Mauvaise hygiène .gitignore sur .tfstate ; backend S3+lock en équipe
Access keys dans un .tf Anti-pattern sécurité Profil CLI, env vars ou SSO — jamais de clés en clair
plan ignoré / -auto-approve systématique Précipitation Lire le plan : les destroys coûtent cher en attention

Quiz (3 questions)

1. Que signifie « déclaratif » pour Terraform ?

  • A. Vous écrivez chaque appel API AWS dans l’ordre exact
  • B. Vous décrivez l’état désiré ; Terraform calcule les actions
  • C. Vous devez utiliser CloudFormation en parallèle

2. À quoi sert principalement terraform plan ?

  • A. Télécharger les providers
  • B. Afficher le diff prévu sans modifier le cloud
  • C. Supprimer le fichier de state

3. Pourquoi le state est-il critique ?

  • A. Il remplace Git
  • B. Il mappe la config vers les IDs réels dans le cloud
  • C. Il contient obligatoirement vos access keys

Réponses : 1‑B · 2‑B · 3‑B

Pourquoi / quand lire ce hub en premier

Vous gagnez du temps en posant le vocabulaire avant d’installer le binaire ou de lancer un apply. Ce hub répond à la question « pourquoi Terraform plutôt que la console ? » sans vous faire payer une ressource AWS. Quand votre équipe bascule vers l’IaC, ce texte sert de référence commune : déclaratif, plan, graphe de dépendances, providers, state. Relisez-le après le premier lab Workflow : les mêmes mots prendront une valeur concrète.

Pièges à éviter dès le jour 1

  • Confondre Terraform (outil multi-cloud) et CloudFormation (service AWS) : utiles tous les deux, périmètres différents.
  • Croire que le HCL « exécute » comme un script bash : Terraform converge vers un état désiré ; l’ordre des fichiers .tf n’est pas un ordre d’exécution séquentiel.
  • Sous-estimer le state : sans lui, Terraform ne sait pas ce qu’il a déjà créé. En lab, le state local suffit ; en équipe, visez S3 + verrouillage (tuto dédié).
  • Coller des access keys dans un .tf « pour aller plus vite » : utilisez un profil CLI / SSO ; Region de lab ca-central-1 ; Terraform ≥ 1.9.
  • Sauter le plan : un destroy non lu dans le plan reste le classique des incidents IaC.

FAQ complémentaire (overview)

Faut-il maîtriser AWS avant Terraform ? Des bases (Region, IAM, S3) aident. La série part du hub AWS et reste Free Tier friendly.

Terraform remplace-t-il Ansible ? Non. Terraform gère surtout le provisioning d’infra ; Ansible brille sur la configuration applicative. Ils se complètent souvent.

Puis-je tout faire en console puis « importer » ? Possible (terraform import), mais plus difficile. Préférez déclarer d’abord, appliquer ensuite.

Pourquoi une série en 22 tutos ? Chaque page isole une compétence (variables, state, modules…) pour éviter les pavés impossibles à maintenir.

Pour aller plus loin

  • Doc officielle : Introduction to Terraform, AWS provider 5.x
  • Sur ce site : après Install, enchaînez Workflow puis Blocks & language
  • Rappel budget : une ressource oubliée (NAT Gateway, ALB) facture vite — le nettoyage fait partie du métier

Maillage série Terraform (P2)

← Précédent — (hub de la série Terraform)
→ Suivant Installer Terraform (Linux, Windows, macOS) — à rédiger
Aussi Workflow · Blocks & language · Providers/resources · State & backend S3+lock
Carte Overview · Install · Workflow · Blocks · Providers · Variables · Locals · Outputs · State · Data sources · Loops · Conditionals · Dynamic blocks · Modules ×2 · Workspaces · Provisioners · EBS · ELB/ALB · IAM · RDS · VPC · Auto Scaling · Route 53

Cas réel — quand Terraform n’est pas le bon premier réflexe

Un atelier interne « on met tout dans Terraform » finit souvent par un state qui décrit aussi le DNS perso, un compte e-mail et trois secrets copiés-collés. Ce n’est pas de l’IaC : c’est un inventaire figé. Gardez Terraform pour ce qui a un cycle de vie cloud (réseau, compute, IAM, data stores). Les documents, les tickets et les runbooks restent hors state.

Piège fréquent : mesurer le succès au nombre de ressources dans le state plutôt qu’à la capacité de destroy puis recréer le lab. Si vous ne pouvez pas détruire sans peur, le module n’est pas encore un lab pédagogique — c’est déjà de la prod déguisée. En ca-central-1, un bucket + un rôle IAM suffisent à prouver le workflow ; n’ajoutez une VPC complète que lorsque le cours l’exige.

À retenir : Terraform décrit un écart, pas un souhait. Le plan est la vérité opérationnelle. Relisez chaque − comme s’il s’agissait d’une base de données, même quand ce n’est « que » un tag.

Retour parcours Terraform — hub de la série et leçons sœurs.

Share your love

Leave a Reply

Your email address will not be published. Required fields are marked *