Terraform

Infrastructure as Code avec Terraform — module 5HASH, Supinfo, jours 1 et 2.
Deux journées pour passer d’un premier conteneur décrit en code à une infrastructure structurée en modules, déployée sur plusieurs environnements, dont le state est partagé, verrouillé et protégé. Le module se poursuit sur deux jours consacrés à Ansible.
| Format | 2 jours · 4 cours et 4 ateliers pratiques |
| Public | étudiants en informatique, bases Linux et Docker |
| Environnement | 100 % local : Docker et Floci (émulateur AWS) — sans compte cloud, sans frais, sans risque |
| Fil rouge | CatCompressor, un pipeline de miniatures d’images (S3, SQS, conteneurs) |
Jour 1 — Les fondamentaux
Cours 1 — Introduction à l’Infrastructure as Code
- Pourquoi l’Infrastructure as Code
- Contexte historique : du serveur physique au cloud
- Cas d’usage et limites
- Panorama des technologies (Terraform, OpenTofu, Pulumi, Ansible…)
- Les concepts de Terraform : providers, ressources, state, cycle plan / apply
Cours 2 — Les bases de Terraform
- Syntaxe et structure du langage HCL
- Définir des ressources
- Configurer des providers
- Lire l’existant avec les data sources
Atelier 1 — Le workflow Terraform avec Docker · 2 h
Parcourir le cycle de vie complet d’une infrastructure sur un provider simple.
- Préparer le projet : providers et versions épinglées
- Définir un premier conteneur web
- Ajouter une seconde ressource par le code
- Modifier l’infrastructure : lire un plan, comprendre un remplacement
- Nettoyer avec
destroy
Atelier 2 — Terraform, AWS et Floci · 2 h 30
Piloter des services AWS émulés en local, au milieu d’une infrastructure existante.
- Démarrer l’émulateur Floci
- Configurer le provider AWS vers un endpoint local
- Créer une infrastructure hors Terraform
- La lire avec des data sources, et créer S3, DynamoDB, SSM, SQS (
for_each) et EC2 - Inspecter avec
terraform consoleet l’AWS CLI - Modifier en place, puis nettoyer — ce que Terraform possède, et ce qu’il se contente de lire
Jour 2 — Structurer, collaborer, sécuriser
Cours 3 — Les modules
- Organiser le code avec des modules
- Variables et outputs
- Locals et fonctions natives
Cours 4 — Backends et collaboration
- La gestion du state
- Backends et workspaces
- La gestion des secrets
- La dérive d’infrastructure
Atelier 3 — Des modules réutilisables pour plusieurs environnements · 3 h
- Mise en route du projet CatCompressor
- Découper un projet en module racine et modules enfants
- Faire circuler les valeurs : variables,
terraform.tfvars, locals, arguments de module - Remonter l’information par les outputs, sur trois niveaux
- Composer dev et staging à partir du même module
- Nettoyer
Atelier 4 — State partagé, workspaces, secrets et dérive · 4 h
- Point de départ : le projet du matin, state local
- Migrer le state vers un backend S3 à verrou natif (
use_lockfile) - Isoler dev et staging avec les workspaces
- Référencer un secret : variable sensible, data source, AWS Secrets Manager
- Détecter une dérive et la réconcilier par un plan relu
- Changer de backend : déplacer les states vers GitLab
- Nettoyer
- Bonus — Intégration continue sur GitLab :
fmt,validateetterraform test
Compétences visées
| Domaine | À l’issue des deux jours, l’étudiant sait… |
|---|---|
| Workflow | écrire, initialiser, planifier, appliquer, modifier et détruire une infrastructure ; lire un plan avant de l’appliquer |
| Providers | configurer Docker et AWS, épingler leurs versions, viser un émulateur local |
| Existant | lire une infrastructure qu’il ne gère pas avec des data sources |
| Modules | découper un projet en modules réutilisables et composer plusieurs environnements |
| Valeurs | faire circuler l’information par variables, .tfvars, locals, arguments et outputs |
| State | partager un state sur S3 ou GitLab, le verrouiller, le versionner, le migrer |
| Environnements | isoler dev et staging par workspaces ou par fichiers d’environnement |
| Secrets | lire un secret sans l’écrire dans le code, et savoir où il reste en clair |
| Dérive | détecter un écart avec plan -refresh-only et le corriger par un plan enregistré et relu |
| Qualité | tester une configuration avec terraform test et l’intégrer à un pipeline CI |
Outils
Terraform 1.11+ · provider AWS 6.x · provider Docker (kreuzwerker/docker) · Floci · AWS CLI v2 · Docker · GitLab (stockage du state, CI) · Git · scripts fournis en bash et en PowerShell
Approche pédagogique
- Un fil rouge unique : le même projet grandit d’atelier en atelier, de la première ressource au pipeline CI.
- Des ateliers à trous : un squelette de projet et des consignes pas à pas — on donne le bloc, l’étudiant l’adapte et en observe l’effet.
- Des consignes vérifiées avant chaque séance : chaque atelier est rejoué automatiquement, étape par étape, sur le squelette distribué ; chaque résultat annoncé est contrôlé, et le projet obtenu est comparé à la correction.
- Un support à jour : verrouillage natif du state S3 (DynamoDB déprécié), provider AWS 6.x, émulateur Floci en remplacement de LocalStack Community, tests Terraform avec providers simulés.
- Une correction et des notes enseignant détaillant chaque bloc de code ligne par ligne, avec les pièges attendus et les solutions de repli.