Ateliers — Terraform Associate 004
Les ateliers suivent le déroulé de la fiche cours. Deux séries, les mêmes étapes : provider neutre, ou Azure. Le texte détaillé plus bas est encore l’amorce Azure. Il sera réécrit avec les modules.
Fil rouge — quatre jours
Intention pédagogique
- Une équipe décrit un environnement, le fait évoluer, et le rend reprisable.
- La série neutre utilise
localetrandom. - La série Azure reprend les mêmes étapes sur un lab Azure.
- HCP Terraform, au jour 4, est commun aux deux séries.
- On détruit l’environnement en fin de parcours, sauf consigne contraire.
Atelier 1 du module 1 : série neutre et série Azure.
Les quatre jours
| Jour | Les deux séries pratiquent |
|---|---|
| 1 | Providers, workflow, premier environnement |
| 2 | Dérive, import, inspection du state. Backend distant en série Azure |
| 3 | Module, validations, outputs |
| 4 | Secret éphémère, HCP Terraform, révision de l’examen |
flowchart LR
J1[Jour 1] --> J2[Jour 2] --> J3[Jour 3] --> J4[Jour 4]
Amorce précédente
Les consignes qui suivent décrivent encore un lab Azure seul, calé sur une demi-journée de socle. Elles seront remplacées par les deux séries au moment de la réécriture des modules.
Jour 1 matin — Projet RG + cycle complet
Durée indicative : ~0h45–1h00 (après les modules 1–3 condensés ; tient dans la demi-journée socle) Modules liés : 2 — Prise en main, 3 — Workflow
Objectif
Vérifier les outils, s’authentifier sur Azure, créer le projet fil rouge et déployer un Resource Group, puis enchaîner le cycle fmt → validate → init → plan → apply, lire le state, et terminer par un destroy (sauf consigne contraire du formateur).
C’est l’équivalent condensé de l’esprit des ateliers Basics 1 et 2 : un projet réel + un cycle de vie complet, sans encore enrichir VNet / storage (réservé à la suite du fil rouge).
Rappel fil rouge
| Maintenant (Jour 1) | Plus tard |
|---|---|
| RG + state local | Backend distant, réseau, modules… |
| Valeurs encore simples (en dur ou tags minimaux) | Variables / modules (Jour 3) |
| Observer le plan et l’idempotence | Agir sur drift / import (Jour 2) |
Comment lire chaque étape
Avant chaque bloc de commandes :
- Pourquoi — l’intention pédagogique
- Résultat attendu — ce que vous devez voir si tout va bien
Dans le code, les commentaires # … sont des micro-indices seulement.
Étapes
1. Vérifier les outils
Pourquoi : s’assurer que Terraform, Azure CLI, l’éditeur et Git sont prêts avant d’écrire du HCL.
Résultat attendu : chaque commande affiche une version. Terraform ≥ 1.10 recommandé.
2. Authentification Azure
Pourquoi : Terraform doit parler à Azure avec vos droits de lab.
Résultat attendu : az account show affiche la souscription lab.
az login --tenant "<TENANT_ID>"
az account list --output table
az account set --subscription "<NOM_OU_ID>"
az account show
Authentification pendant la formation
Si le formateur fournit un Service Principal temporaire (variables ARM_*), suivez l’encadré du module 2. Le bloc provider reste minimal.
3. Créer le dossier projet
Pourquoi : un seul dossier pour le fil rouge Associate.
Résultat attendu : vous êtes dans tf-associate-lab/ et git status fonctionne.
4. Écrire la configuration minimale
Pourquoi : poser les trois blocs (terraform, provider, resource) sur un Resource Group.
Résultat attendu : des fichiers .tf valides, avec un nom RG unique (alias participant).
Exemple (à adapter — remplacez alice par votre alias) :
# versions.tf
terraform {
required_version = ">= 1.10.0"
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~> 3.0"
}
}
}
# providers.tf
provider "azurerm" {
features {}
}
# main.tf
resource "azurerm_resource_group" "lab" {
name = "rg-tfassoc-lab-alice"
location = "switzerlandnorth"
tags = {
course = "tf-associate"
env = "lab"
}
}
5. Qualité + initialisation + premier déploiement
Pourquoi : ancrer l’enchaînement professionnel avant le cloud, puis créer le RG.
Résultat attendu : validate OK ; le plan montre + sur le Resource Group ; l’apply le crée ; un second plan affiche No changes.
terraform fmt
terraform init
terraform validate
terraform plan
terraform apply
terraform plan # doit : No changes
6. Lire le state (aperçu)
Pourquoi : voir ce que Terraform gère réellement (le carnet, pas tout Azure).
Résultat attendu : state list affiche azurerm_resource_group.lab.
7. Destroy de fin de lab Jour 1
Pourquoi : éviter des coûts et repartir propre si le lab n’est pas repris tel quel le lendemain.
Résultat attendu : le plan de destruction liste le RG ; après confirmation, le groupe disparaît du portail et du state.
Coûts cloud
Utilisez une souscription de lab et des noms préfixés avec votre alias. Ne laissez pas un Resource Group orphelin sans consigne du formateur.
Critères de réussite Jour 1
- [ ] Outils et auth OK sur la bonne souscription
- [ ] Projet
tf-associate-labversionné (sans state ni.terraform/dans Git) - [ ] Cycle
fmt/init/validate/plan/applyréussi - [ ] Idempotence constatée (second plan vide)
- [ ]
state listlu ;destroyeffectué (ou lab conservé sur ordre du formateur)
Jour 2 — State distant, import et drift
Statut : à rédiger
Titre provisoire : Backend distant (Azure Storage), state lock, import, drift en action, commandes state.
Intention : partir du projet Jour 1 (ou le recréer rapidement) et professionnaliser le state ; ne plus seulement observer le drift.
Jour 3 — Modules et configuration avancée
Statut : à rédiger
Titre provisoire : Extraire un module local, variables / validations, expressions (count / for_each), fil rouge enrichi.
Intention : faire évoluer le dépôt vers une structure d’équipe (modules + interfaces typées).
Jour 4 — Terraform Cloud et préparation examen
Statut : à rédiger
Titre provisoire : Workspaces TFC / HCP, variables collaboratives, révision Associate 004.
Intention : croiser le lab avec une plateforme managée et consolider les objectifs d’examen.
Liste synthétique
| Jour | Atelier | Statut |
|---|---|---|
| 1 | Projet RG + cycle complet | Détaillé (ci-dessus) |
| 2 | State distant / import / drift | Squelette — à rédiger |
| 3 | Modules et HCL avancé | Squelette — à rédiger |
| 4 | TFC + révision examen | Squelette — à rédiger |
Lien avec Terraform Basics
Pour une progression plus lente sur le même socle (VNet, storage, variables, FAQ drift), voir les ateliers Terraform Basics.
L’Associate ne remplace pas ce contenu : le matin le rejoue en demi-journée, puis l’après-midi démarre la valeur Associate (providers).