Objectifs
- Comprendre le rôle de Terraform dans le provisionnement d’infrastructure.
- Découvrir la syntaxe de base de HCL (HashiCorp Configuration Language).
- Maîtriser le workflow fondamental de Terraform :
init,plan,apply. - Définir vos premiers
providersetresources.
Qu’est-ce que Terraform ?
Terraform est un outil d’Infrastructure as Code (IaC) open source créé par HashiCorp. Il vous permet de définir et de provisionner une infrastructure de manière déclarative et multi-cloud.
- Déclaratif : Vous décrivez l’état final de ce que vous voulez, pas les étapes pour y arriver.
- Multi-cloud : Avec le même outil et le même langage, vous pouvez gérer des ressources sur AWS, Azure, Google Cloud, mais aussi sur d’autres plateformes comme GitHub, Cloudflare ou Docker.
Le langage HCL
Terraform utilise son propre langage, le HCL (HashiCorp Configuration Language), qui est conçu pour être lisible par les humains tout en étant structuré. Les fichiers de configuration Terraform ont l’extension .tf.
Blocs principaux en HCL
terraform { ... }: Bloc de configuration de Terraform lui-même, où l’on déclare lesprovidersnécessaires.provider "nom" { ... }: Configure un fournisseur spécifique (ex: AWS) avec les clés d’accès nécessaires.resource "type" "nom" { ... }: C’est le cœur de Terraform. Ce bloc décrit une ressource d’infrastructure à gérer.type: Le type de ressource (ex:aws_instancepour un serveur AWS).nom: Un nom local que vous donnez à la ressource dans votre code.{ ... }: Les arguments de configuration de la ressource.
Le workflow fondamental de Terraform
Le travail avec Terraform suit un cycle en 3 étapes claires et sûres.
1. terraform init
Cette commande est à exécuter une seule fois au début d’un projet. Elle analyse votre code, identifie les providers dont vous avez besoin (ex: aws, google) et télécharge les plugins correspondants.
2. terraform plan
C’est l’étape de “simulation”. Terraform compare votre code HCL à l’état réel de votre infrastructure (qu’il connaît grâce à un fichier d’état terraform.tfstate) et vous montre exactement ce qu’il va faire :
+ create: Les ressources à créer.- destroy: Les ressources à supprimer.~ update in-place: Les ressources à modifier.
Cette commande est non destructive et vous permet de vérifier vos changements avant de les appliquer.
3. terraform apply
Cette commande exécute le plan généré par terraform plan. Elle effectue les appels d’API nécessaires vers votre fournisseur cloud pour créer, modifier ou supprimer les ressources. Avant d’agir, elle vous demandera une confirmation manuelle.
Premier exemple : Créer un fichier local
Pour comprendre le workflow sans avoir besoin d’un compte cloud, on peut utiliser le provider local.
Fichier main.tf :
# On déclare que notre code a besoin du provider 'local'
terraform {
required_providers {
local = {
source = "hashicorp/local"
version = "2.4.0"
}
}
}
# On définit une ressource de type 'local_file'
resource "local_file" "mon_fichier" {
content = "Bonjour, Terraform !"
filename = "${path.module}/hello.txt"
}
Exécution dans le terminal :
# 1. Initialiser le projet (télécharge le provider 'local')
terraform init
# 2. Voir ce que Terraform va faire (il va créer un fichier)
terraform plan
# 3. Appliquer les changements (après confirmation)
terraform apply
# Un fichier 'hello.txt' a été créé dans votre dossier !
# 4. Pour nettoyer, on utilise 'destroy'
terraform destroy
Bonnes pratiques
- Exécutez toujours
terraform planet lisez attentivement la sortie avant de lancerterraform apply. - Versionnez votre code Terraform dans Git, mais ajoutez
*.tfstate*et.terraform/à votre.gitignore. Le fichier d’état contient potentiellement des secrets et sa gestion est complexe en équipe (on utilise des “backends distants” pour cela). - Organisez votre code en plusieurs fichiers (
main.tf,variables.tf,outputs.tf) dès que votre projet grandit.
Pièges courants
- Modifier manuellement une ressource gérée par Terraform : Si vous changez quelque chose dans l’interface web de votre cloud, au prochain
plan, Terraform détectera une “dérive” et voudra annuler votre changement manuel. Laissez toujours Terraform gérer ses ressources. - Secrets en clair dans le code : Ne mettez jamais de clés d’API ou de mots de passe directement dans vos fichiers
.tf. Utilisez des variables et des mécanismes de gestion de secrets.
Exercices
-
Installez Terraform :
- Suivez les instructions sur le site officiel de Terraform pour l’installer sur votre machine.
-
Exécutez l’exemple local :
- Créez un dossier, mettez-y le code HCL de l’exemple ci-dessus.
- Exécutez le cycle complet :
init,plan,apply. - Vérifiez que le fichier
hello.txtest bien créé.
-
Modifiez la ressource :
- Changez le
contentdans votremain.tf. - Lancez
terraform planà nouveau. Observez que Terraform vous propose maintenant de modifier (~) la ressource. - Appliquez le changement.
- Changez le
-
Nettoyez :
- Lancez
terraform destroypour supprimer le fichier géré par Terraform.
- Lancez