Exercice 02 : Configurer un provider et initialiser un projet
🎯 Objectifs
À la fin de cet exercice, vous serez capable de :
- ✅ Écrire le bloc
terraform { required_providers {} } - ✅ Exécuter
terraform initet comprendre ce qu'il fait - ✅ Utiliser les contraintes de versions (
~>,>=) - ✅ Lire la sortie de
terraform providers
Durée estimée : 15 minutes
Difficulté : ⭐☆☆☆☆ (Débutant)
Prérequis : Terraform installé, exercice 01 terminé
📖 Contexte
Le provider est le plugin qui permet à Terraform de communiquer avec une API (AWS, Docker, GitHub, etc.). Terraform ne sait rien faire sans provider. terraform init télécharge les plugins déclarés depuis le registry HashiCorp et génère un lockfile pour garantir la reproductibilité.
📋 Énoncé
Vous allez configurer le provider Docker (sans compte cloud requis) dans un projet Terraform, l'initialiser et explorer les fichiers générés.
Résultat attendu :
- Un projet initialisé avec le provider Docker
- Compréhension du dossier
.terraform/et du fichier.terraform.lock.hcl
🧭 Déroulement de l'exercice
Tâche 1 : Créer le bloc terraform avec required_providers
Dans un nouveau fichier versions.tf, déclarez que votre projet requiert le provider Docker de kreuzwerker/docker en version ~> 3.0.
Indice :
~> 3.0signifie "3.0 ou supérieur, mais inférieur à 4.0" (patch autorisé, major non).
Vérification : terraform validate retourne Success! (même sans ressources).
Tâche 2 : Ajouter le bloc provider
Dans main.tf, ajoutez un bloc provider "docker" {} vide (la configuration par défaut convient pour un Docker local).
Indice : Le bloc provider configure la connexion à l'API. Pour Docker local, aucun paramètre n'est nécessaire.
Vérification : Le fichier main.tf contient un bloc provider "docker" {}.
Tâche 3 : Exécuter terraform init
Lancez terraform init et observez attentivement la sortie.
Indice : Terraform télécharge le provider, crée
.terraform/providers/, et génère.terraform.lock.hcl.
Vérification : La sortie affiche Terraform has been successfully initialized!
Tâche 4 : Explorer les fichiers générés
Inspectez le contenu de .terraform/ et du fichier .terraform.lock.hcl.
Indice :
.terraform.lock.hclenregistre les versions exactes et les hash de chaque provider. Il doit être commité dans Git.
Vérification : cat .terraform.lock.hcl affiche la version exacte du provider Docker téléchargé.
Tâche 5 : Lister les providers
Utilisez terraform providers pour afficher l'arbre des providers utilisés par le projet.
Indice : Cette commande affiche les providers requis et leur source, même avant un
init.
Vérification : La sortie montre provider[registry.terraform.io/kreuzwerker/docker].
🗂️ Mini-Projet : Projet multi-providers
Configurez un projet qui utilise deux providers : Docker et hashicorp/random (pour générer des valeurs aléatoires).
# versions.tf
terraform {
required_version = ">= 1.5.0"
required_providers {
docker = {
source = "kreuzwerker/docker"
version = "~> 3.0"
}
random = {
source = "hashicorp/random"
version = "~> 3.5"
}
}
}# main.tf
provider "docker" {}
provider "random" {}
resource "random_pet" "container_name" {
length = 2
}Checkpoints :
terraform inittélécharge les deux providers sans erreur.terraform.lock.hclcontient les deux providers avec leurs hashterraform providersaffiche les deux providersterraform validateretourneSuccess!ls .terraform/providers/montre les dossiers des deux providers