Déployer son infrastructure avec Terraform : premiers pas¶
Résumé
Introduction à Terraform, un outil open-source d'Infrastructure as Code (IaC). Ce tutoriel explique les concepts de base et vous guide dans la création, la modification et la destruction d'une infrastructure locale simple (un conteneur Docker) de manière automatisée.
| Propriété | Valeur |
|---|---|
| Difficulté | Débutant |
| OS / Environnement | Ubuntu 24.04 / Linux |
| Dernière mise à jour | 2026-06-15 |
Contexte¶
Dans les environnements modernes, l'infrastructure (serveurs, réseaux, bases de données) n'est plus configurée manuellement (clics dans une interface web ou commandes manuelles). Elle est décrite sous forme de code. C'est ce qu'on appelle l'Infrastructure as Code (IaC).
Terraform, développé par HashiCorp, est l'outil leader du marché pour cette tâche. Il utilise un langage déclaratif (HCL - HashiCorp Configuration Language) pour décrire le résultat final souhaité, et s'occupe de faire les appels d'API nécessaires pour atteindre cet état.
Pour comprendre Terraform sans avoir besoin de créer un compte cloud (AWS, Azure, GCP) ou de carte bancaire, nous allons utiliser le provider Docker. Nous allons demander à Terraform de déployer un serveur web Nginx localement.
Prérequis¶
- Une machine Linux (Ubuntu/Debian préféré).
- L'accès à un terminal avec les droits
sudo. - Docker installé et actif sur la machine. (Voir Installer Docker Engine sur Ubuntu 24.04).
Concepts clés¶
- Provider : C'est le plugin qui permet à Terraform d'interagir avec une API distante (AWS, Docker, Proxmox, VMware...).
- Resource : C'est un élément d'infrastructure que l'on souhaite créer (une VM, un réseau, un conteneur).
- State (
terraform.tfstate) : C'est le fichier (souvent distant) dans lequel Terraform mémorise l'état actuel de votre infrastructure pour pouvoir la comparer à votre code.
Procédure¶
Étape 1 : Installer Terraform¶
Sur Ubuntu, Terraform s'installe depuis le dépôt officiel de HashiCorp.
# Ajouter la clé GPG officielle
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
# Ajouter le dépôt
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
# Installer
sudo apt update && sudo apt install terraform
Vérifiez l'installation :
Étape 2 : Préparer le projet¶
Créez un dossier pour votre projet Terraform et rendez-vous dedans :
Créez un fichier nommé main.tf avec votre éditeur favori (ex: nano main.tf) et ajoutez le code suivant :
terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
version = "~> 3.0.0"
}
}
}
provider "docker" {
# Pour Linux, on utilise le socket Docker local
host = "unix:///var/run/docker.sock"
}
# Télécharger l'image Nginx
resource "docker_image" "nginx" {
name = "nginx:latest"
keep_locally = false
}
# Lancer un conteneur à partir de cette image
resource "docker_container" "nginx" {
image = docker_image.nginx.image_id
name = "mon_serveur_web_terraform"
ports {
internal = 80
external = 8080
}
}
Étape 3 : Initialiser Terraform (init)¶
La première commande à lancer dans tout projet Terraform est init. Elle télécharge les plugins (providers) nécessaires définis dans votre fichier de configuration.
Résultat
Vous devriez voir Terraform has been successfully initialized!. Un dossier .terraform a été créé pour stocker le plugin Docker.
Étape 4 : Planifier les changements (plan)¶
Avant d'appliquer quoi que ce soit, on demande à Terraform ce qu'il a l'intention de faire.
Dans la sortie console, Terraform vous indique avec un + vert ce qu'il va créer (ici, l'image Docker et le conteneur). Il affichera un résumé comme : Plan: 2 to add, 0 to change, 0 to destroy.
Étape 5 : Appliquer la configuration (apply)¶
Une fois le plan validé, lancez la création de l'infrastructure :
Terraform réaffiche le plan et vous demande de confirmer. Tapez yes et validez. Terraform va alors : 1. Télécharger l'image Nginx. 2. Démarrer le conteneur Nginx avec la redirection du port 8080 vers le port 80.
Étape 6 : Détruire l'infrastructure (destroy)¶
L'avantage de l'IaC, c'est le nettoyage complet sans oublier de ressources. Pour tout supprimer :
Confirmez avec yes. Terraform arrêtera et supprimera le conteneur ainsi que l'image.
Vérification¶
Entre l'étape 5 (apply) et l'étape 6 (destroy), vous pouvez vérifier que votre infrastructure est bien en place.
-
Vérifier via Docker :
Vous devriez voir un conteneur nommémon_serveur_web_terraformen cours d'exécution. -
Vérifier le serveur web : Ouvrez un navigateur sur
!!! success "Résultat attendu" Le code HTML de la page d'accueil par défaut de Nginx s'affiche ("Welcome to nginx!").http://localhost:8080ou faites uncurl:
Aide-mémoire¶
| Commande | Description |
|---|---|
terraform init | Initialise le projet et télécharge les providers |
terraform plan | Affiche les modifications qui vont être apportées |
terraform apply | Applique les changements (création, modification, suppression) |
terraform destroy | Détruit toute l'infrastructure gérée par le projet |
terraform fmt | Formate proprement le code HCL du dossier courant |
Ressources¶
- Documentation officielle Terraform — HashiCorp
- Provider Docker pour Terraform — Terraform Registry