Aller au contenu

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 local et random.
  • 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é.

terraform version   # >= 1.10 recommandé
az version
git --version

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.

mkdir tf-associate-lab
cd tf-associate-lab
git init

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.

terraform state list
terraform state show 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.

terraform destroy

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-lab versionné (sans state ni .terraform/ dans Git)
  • [ ] Cycle fmt / init / validate / plan / apply réussi
  • [ ] Idempotence constatée (second plan vide)
  • [ ] state list lu ; destroy effectué (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).