DevOpsFacile
AccueilParcours de formationCertificationsModulesCheat SheetÀ Propos
DevOpsFacile

Une plateforme d'apprentissage complète pour maîtriser les pratiques DevOps modernes, du débutant à l'expert.

contact@devopsfacile.fr

Formation

  • Parcours de formation
  • Modules

Informations

  • À Propos
  • Conditions d'utilisation
  • Confidentialité
  • Mentions légales

© 2026 DevOps Facile. Tous droits réservés.

Fait avec pour la communauté DevOps

ModulesInfrastructure as Code : premiers pas avec Terraform05 - Paramétrer avec les variables et outputs

Détails

  • 20 minutes
  • Débutant

Objectifs

  • Déclarer des variables avec type, description et valeur par défaut
  • Fournir des valeurs via terraform.tfvars et -var
  • Déclarer des outputs pour exposer des valeurs
  • Lire les outputs avec terraform output
Module Infrastructure as Code : premiers pas avec Terraform

Exercice 05 : Paramétrer avec les variables et outputs

🎯 Objectifs

À la fin de cet exercice, vous serez capable de :

  • ✅ Déclarer des variables avec variable {} (type, description, default)
  • ✅ Fournir les valeurs via terraform.tfvars et -var
  • ✅ Déclarer et lire des outputs avec output {}
  • ✅ Utiliser terraform output pour récupérer les valeurs après apply

Durée estimée : 20 minutes

Difficulté : ⭐⭐☆☆☆ (Débutant+)

Prérequis : Terraform installé, exercices 01-04 terminés


📖 Contexte

Coder des valeurs en dur dans les ressources empêche la réutilisation. Les variables rendent la configuration paramétrable (environnement, région, taille). Les outputs permettent d'exposer des informations sur l'infrastructure créée, utiles pour les humains ou d'autres modules Terraform.


📋 Énoncé

Vous allez extraire toutes les valeurs hardcodées du projet précédent (nom, port, image) dans des variables, et exposer les informations clés via des outputs.

Résultat attendu :

  • Un projet entièrement paramétré via variables
  • Des outputs qui exposent le nom et le port du conteneur créé

🧭 Déroulement de l'exercice

Tâche 1 : Déclarer les variables

Dans variables.tf, déclarez trois variables : container_name (string), external_port (number, défaut 8080), et nginx_version (string, défaut "1.25").

Indice : Chaque variable doit avoir type, description et default (sauf si obligatoire).

Vérification : terraform validate retourne Success!.


Tâche 2 : Utiliser les variables dans main.tf

Remplacez toutes les valeurs hardcodées dans main.tf par des références aux variables (var.container_name, etc.).

Indice : Utilisez l'interpolation "nginx:${var.nginx_version}" pour construire le nom de l'image.

Vérification : terraform plan utilise les valeurs par défaut des variables.


Tâche 3 : Créer terraform.tfvars

Créez un fichier terraform.tfvars qui surcharge container_name et external_port.

Indice : terraform.tfvars est chargé automatiquement par Terraform. Les valeurs y écrasent les default des variables.

Vérification : terraform plan utilise les valeurs de terraform.tfvars.


Tâche 4 : Surcharger une variable en ligne

Lancez un plan en surchargeant external_port via l'option -var sans modifier de fichier.

Indice : terraform plan -var="external_port=9000"

Vérification : Le plan utilise le port 9000 sans que terraform.tfvars soit modifié.


Tâche 5 : Déclarer et lire les outputs

Dans outputs.tf, déclarez deux outputs : container_name et access_url (construite avec l'interpolation "http://localhost:${var.external_port}").

Indice : Après terraform apply, terraform output access_url retourne l'URL directement.

Vérification : terraform output -json affiche un JSON avec les deux valeurs.


🗂️ Mini-Projet : Configuration multi-environnement

projet/
├── main.tf
├── variables.tf
├── outputs.tf
├── terraform.tfvars        # dev (commité)
└── prod.tfvars             # prod (commité)
hcl
# variables.tf
variable "container_name" {
  type        = string
  description = "Nom du conteneur Docker"
}

variable "external_port" {
  type        = number
  description = "Port exposé sur l'hôte"
  default     = 8080
}

variable "nginx_version" {
  type        = string
  description = "Version de l'image nginx"
  default     = "1.25"
}
hcl
# terraform.tfvars (dev)
container_name = "nginx-dev"
external_port  = 8080
nginx_version  = "1.25"
hcl
# prod.tfvars
container_name = "nginx-prod"
external_port  = 80
nginx_version  = "1.25-alpine"

Checkpoints :

  • terraform plan sans arguments utilise les valeurs de terraform.tfvars
  • terraform plan -var-file=prod.tfvars utilise les valeurs de production
  • terraform plan -var="external_port=9999" override une seule valeur
  • terraform apply puis terraform output access_url affiche http://localhost:8080
  • terraform output -json retourne un JSON valide avec les deux outputs

Retour au module

Sur cette page

  • 🎯 Objectifs
  • 📖 Contexte
  • 📋 Énoncé
  • 🧭 Déroulement de l'exercice
  • Tâche 1 : Déclarer les variables
  • Tâche 2 : Utiliser les variables dans main.tf
  • Tâche 3 : Créer terraform.tfvars
  • Tâche 4 : Surcharger une variable en ligne
  • Tâche 5 : Déclarer et lire les outputs
  • 🗂️ Mini-Projet : Configuration multi-environnement