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 Terraform

Module

Découvrez l'Infrastructure as Code : installez Terraform et créez vos premières ressources.

  • 1h30
  • Débutant
  • 6 exercices
Voir les exercices

Formation 100 % Linux

Tous les modules nécessitent un environnement Linux. Si vous êtes sur Windows, installez d'abord WSL (Windows Subsystem for Linux) avant de continuer.

Infrastructure as Code : premiers pas avec Terraform

🎯 Objectifs

  • ✅ Comprendre le concept d'Infrastructure as Code (IaC)
  • ✅ Installer et configurer Terraform
  • ✅ Maîtriser la syntaxe HCL de base
  • ✅ Créer et détruire des ressources avec le provider Docker
  • ✅ Connaître le workflow Terraform : init → plan → apply → destroy

📋 Prérequis

  • Linux Intermédiaire (ligne de commande, éditeur de texte)
  • Docker Débutant (Docker installé et fonctionnel)

📖 Pourquoi l'Infrastructure as Code ?

Le problème

Sans IaC, l'infrastructure est configurée manuellement. Résultat : des serveurs flocons de neige (snowflake servers) - chaque machine est unique, impossible à reproduire. Le moindre changement non documenté crée une dérive de configuration (configuration drift).

La solution

Décrire toute l'infrastructure dans du code, le versionner avec Git, et le reproduire à volonté.

AvantageDescription
🔄 ReproductibilitéMême code = même infrastructure, à chaque fois
📝 VersioningHistorique complet des changements (Git)
⚡ AutomatisationDéploiement en une commande
📚 DocumentationLe code est la documentation

🔍 Outils IaC - Comparaison rapide

OutilApprocheLangageCloud
TerraformDéclarativeHCLMulti-cloud
AnsibleImpérativeYAMLMulti-cloud
PulumiDéclarativePython, Go, TSMulti-cloud
CloudFormationDéclarativeJSON/YAMLAWS uniquement

💡 Terraform est l'outil IaC le plus populaire grâce à son approche multi-cloud et sa communauté active.


🔧 Installation

Linux (Ubuntu/Debian)

bash
sudo apt-get update && sudo apt-get install -y gnupg software-properties-common
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt-get update && sudo apt-get install terraform

macOS

bash
brew tap hashicorp/tap
brew install hashicorp/tap/terraform

Vérification

bash
terraform -version
# Terraform v1.9.x

🧩 Concepts clés

ConceptDescription
ProviderPlugin qui connecte Terraform à une plateforme (Docker, AWS, Azure…)
ResourceÉlément d'infrastructure à créer (conteneur, réseau, VM…)
StateFichier qui stocke l'état actuel de l'infrastructure gérée
PlanAperçu des changements avant application

🔄 Workflow Terraform

terraform init  →  terraform plan  →  terraform apply  →  terraform destroy
   (setup)         (prévisualiser)      (appliquer)         (supprimer)
  1. init - Télécharge les providers et initialise le projet
  2. plan - Montre ce qui va être créé/modifié/détruit (lecture seule)
  3. apply - Applique les changements réels
  4. destroy - Supprime toutes les ressources gérées

📝 Syntaxe HCL - Les bases

Terraform utilise une approche déclarative : vous décrivez l'état souhaité, Terraform calcule les actions nécessaires.

Bloc Provider

hcl
terraform {
  required_providers {
    docker = {
      source  = "kreuzwerker/docker"
      version = "~> 3.0"
    }
  }
}

provider "docker" {}

Bloc Resource

hcl
resource "type_ressource" "nom_local" {
  argument1 = "valeur1"
  argument2 = "valeur2"
}

🏗️ Premier projet - Conteneur Nginx avec Docker

Aucun compte cloud nécessaire ! On utilise Docker en local.

Créer main.tf

hcl
terraform {
  required_providers {
    docker = {
      source  = "kreuzwerker/docker"
      version = "~> 3.0"
    }
  }
}

provider "docker" {}

resource "docker_image" "nginx" {
  name         = "nginx:alpine"
  keep_locally = false
}

resource "docker_container" "web" {
  name  = "mon-nginx"
  image = docker_image.nginx.image_id

  ports {
    internal = 80
    external = 8080
  }
}

Étapes

bash
# 1. Initialiser le projet
terraform init

# 2. Prévisualiser les changements
terraform plan

# 3. Appliquer (crée le conteneur)
terraform apply
# Tapez "yes" pour confirmer

# 4. Vérifier
curl http://localhost:8080

# 5. Nettoyer
terraform destroy

⚠️ terraform apply modifie votre infrastructure réelle. Lisez toujours le plan avant de confirmer !


📋 Commandes essentielles

CommandeDescription
terraform initInitialise le projet, télécharge les providers
terraform planAffiche les changements prévus
terraform applyApplique les changements
terraform destroySupprime toutes les ressources
terraform fmtFormate le code HCL
terraform validateVérifie la syntaxe du code
terraform showAffiche l'état actuel

❌ Erreurs courantes

ErreurCauseSolution
Provider not foundterraform init non exécutéLancer terraform init
Docker not runningDaemon Docker arrêtésudo systemctl start docker
Port already in usePort 8080 occupéChanger le port external
Permission deniedDroits Docker insuffisantsAjouter l'utilisateur au groupe docker
State lockAutre processus en coursAttendre ou terraform force-unlock

🎯 Points clés

  1. L'IaC transforme l'infrastructure en code versionnable et reproductible
  2. Terraform est déclaratif : vous décrivez le résultat, pas les étapes
  3. Le workflow init → plan → apply est la base de tout projet Terraform
  4. Le state (terraform.tfstate) est critique - ne jamais le modifier manuellement
  5. Le plan doit toujours être relu avant d'appliquer des changements

📚 Ressources

  • Documentation officielle Terraform
  • Registry Terraform - Provider Docker
  • HashiCorp Learn - Get Started

🚀 Prochaines étapes

Vous avez créé vos premières ressources Terraform. Approfondissez :

  1. Terraform : variables, modules et gestion du state - Variables, state management et modules réutilisables

Exercices Pratiques

6 exercices pour mettre en pratique

01

01 - Installer Terraform et configurer l'environnement

15 minutesDébutant
02

02 - Configurer un provider et initialiser un projet

15 minutesDébutant
03

03 - Créer ses premières ressources

20 minutesDébutant
04

04 - Comprendre le workflow plan → apply → destroy

20 minutesDébutant
05

05 - Paramétrer avec les variables et outputs

20 minutesDébutant
06

06 - Projet Capstone : Créer et gérer une infrastructure Docker avec Terraform

40 minutesIntermédiaire
Retour aux modules

Sur cette page

  • 🎯 Objectifs
  • 📋 Prérequis
  • 📖 Pourquoi l'Infrastructure as Code ?
  • Le problème
  • La solution
  • 🔍 Outils IaC - Comparaison rapide
  • 🔧 Installation
  • Linux (Ubuntu/Debian)
  • macOS
  • Vérification
  • 🧩 Concepts clés
  • 🔄 Workflow Terraform
  • 📝 Syntaxe HCL - Les bases
  • Bloc Provider
  • Bloc Resource
  • 🏗️ Premier projet - Conteneur Nginx avec Docker
  • Créer main.tf
  • Étapes
  • 📋 Commandes essentielles
  • ❌ Erreurs courantes
  • 🎯 Points clés
  • 📚 Ressources
  • 🚀 Prochaines étapes