Exercice 01 : Installer Terraform et configurer l'environnement
🎯 Objectifs
À la fin de cet exercice, vous serez capable de :
- ✅ Installer Terraform et vérifier l'installation
- ✅ Comprendre la syntaxe HCL (bloc, attribut, expression)
- ✅ Utiliser
terraform fmtpour formater son code - ✅ Structurer un projet Terraform avec les fichiers conventions
Durée estimée : 15 minutes
Difficulté : ⭐☆☆☆☆ (Débutant)
Prérequis : Accès terminal Linux/macOS/WSL, connexion internet
📖 Contexte
Terraform est un outil d'Infrastructure as Code (IaC) qui permet de créer, modifier et supprimer des ressources cloud en déclarant l'état souhaité dans des fichiers .tf. Avant de créer la moindre ressource, il faut comprendre la syntaxe HCL et l'organisation d'un projet.
📋 Énoncé
Vous allez installer Terraform, créer un projet minimal, explorer la syntaxe HCL et utiliser les outils de base (fmt, validate, version).
Résultat attendu :
- Terraform installé et fonctionnel
- Un projet avec la structure conventionnelle
🧭 Déroulement de l'exercice
Tâche 1 : Installer Terraform
Installez Terraform via le gestionnaire de paquets de votre système, puis vérifiez la version.
Indice : Sur Ubuntu/Debian :
sudo apt-get install terraformaprès avoir ajouté le dépôt HashiCorp. Sur macOS :brew install terraform.
Vérification : terraform version affiche Terraform v1.x.x.
Tâche 2 : Activer l'autocomplétion
Activez l'autocomplétion de la CLI terraform dans votre shell.
Indice :
terraform -install-autocompletepuis relancez votre shell.
Vérification : Taper terraform puis Tab propose les sous-commandes.
Tâche 3 : Créer la structure du projet
Créez un dossier terraform-demo avec les fichiers conventionnels : main.tf, variables.tf, outputs.tf.
Indice : La convention Terraform est un fichier par type de contenu.
main.tfpour les ressources,variables.tfpour les variables,outputs.tfpour les outputs.
Vérification : ls terraform-demo/ liste les trois fichiers.
Tâche 4 : Explorer la syntaxe HCL
Écrivez un bloc locals dans main.tf qui définit deux valeurs : environment = "dev" et project_name = "mon-projet".
Indice : Un bloc HCL a la forme :
keyword "label" { attribut = valeur }.localsn'a pas de label.
Vérification : terraform fmt main.tf reformate le fichier sans erreur.
Tâche 5 : Utiliser terraform fmt
Introduisez intentionnellement un mauvais formatage (indentation incorrecte) dans main.tf, puis utilisez terraform fmt pour le corriger.
Indice :
terraform fmt -diffmontre les changements avant de les appliquer.terraform fmt -checkretourne un code d'erreur si le code n'est pas formaté (utile en CI).
Vérification : terraform fmt -check retourne 0 (pas d'erreur) après le formatage.
🗂️ Mini-Projet : Structure de projet complète
Créez la structure suivante pour un projet Terraform de production :
terraform-projet/
├── main.tf # ressources principales
├── variables.tf # déclarations des variables
├── outputs.tf # valeurs exportées
├── locals.tf # valeurs calculées locales
├── versions.tf # contraintes de versions
└── terraform.tfvars # valeurs des variables (non commité)Contenu de versions.tf :
terraform {
required_version = ">= 1.5.0"
required_providers {
docker = {
source = "kreuzwerker/docker"
version = "~> 3.0"
}
}
}Contenu de locals.tf :
locals {
environment = "dev"
project_name = "mon-projet"
common_tags = {
Project = local.project_name
Environment = local.environment
ManagedBy = "terraform"
}
}Checkpoints :
terraform versionaffiche une version >= 1.5.0ls terraform-projet/liste les 6 fichiersterraform fmt -check terraform-projet/retourne 0 (code formaté)terraform validatedans le dossier retourneSuccess!cat locals.tfaffiche correctement les locals imbriqués