Terraform pour débutant : Infrastructure as Code pas à pas
Terraform est l'outil d'Infrastructure as Code (IaC) le plus utilisé au monde. Il vous permet de décrire votre infrastructure cloud dans des fichiers de configuration, puis de la créer, modifier ou détruire en une seule commande.
Pourquoi Terraform ? Au lieu de cliquer dans une console AWS/Azure/GCP pendant des heures, vous écrivez du code reproductible, versionnable et partageable.
Les concepts fondamentaux
Providers
Les providers sont les "plugins" qui connectent Terraform aux services cloud. AWS, Azure, GCP, mais aussi Cloudflare, GitHub, Kubernetes...
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "eu-west-3" # Paris
}Resources
Les resources sont les éléments d'infrastructure que Terraform crée et gère.
resource "aws_instance" "web" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t3.micro"
tags = {
Name = "mon-serveur-web"
}
}State
Le state (fichier terraform.tfstate) est la mémoire de Terraform. Il stocke l'état actuel de votre infrastructure pour savoir quoi créer, modifier ou supprimer.
Les 5 commandes essentielles
terraform init # Télécharge les providers
terraform plan # Prévisualise les changements
terraform apply # Applique les changements
terraform destroy # Supprime tout
terraform state # Gère le stateLe workflow Terraform
terraform init— initialise le projet et télécharge les providersterraform plan— affiche ce qui va être créé/modifié/suppriméterraform apply— exécute les changements (demande confirmation)terraform destroy— supprime toute l'infrastructure
Variables et outputs
# variables.tf
variable "instance_type" {
description = "Type d'instance EC2"
type = string
default = "t3.micro"
}
variable "environment" {
description = "Environnement de déploiement"
type = string
validation {
condition = contains(["dev", "staging", "prod"], var.environment)
error_message = "Environnement invalide."
}
}
# outputs.tf
output "server_ip" {
value = aws_instance.web.public_ip
}Modules : réutiliser votre code
Les modules permettent de packager et réutiliser des configurations Terraform. C'est comme des fonctions pour votre infrastructure.
module "vpc" {
source = "./modules/vpc"
cidr_block = "10.0.0.0/16"
environment = var.environment
}
module "web_server" {
source = "./modules/ec2"
subnet_id = module.vpc.public_subnet_id
instance_type = var.instance_type
}Bonnes pratiques Terraform
- Remote state : stockez le state dans S3/Azure Blob, jamais en local en équipe
- State locking : utilisez DynamoDB pour éviter les conflits
- Modules : factorisez votre code dès que vous avez de la duplication
- Workspaces : gérez dev/staging/prod avec le même code
- Plan before apply : toujours vérifier le plan avant d'appliquer
- Versionning : git + PR obligatoire pour tout changement d'infra
Certification HashiCorp Terraform Associate
La certification Terraform Associate (003) valide vos compétences IaC. Format : 57 questions QCM en 60 minutes. Elle couvre les concepts fondamentaux, le workflow, les modules, le state et les bonnes pratiques.
Préparez la certification : Sur LabsDevOps, les 54 labs Terraform vous font pratiquer chaque concept sur de vrais environnements. L'examen blanc inclus vous permet de vous tester en conditions réelles.
Passez à la pratique
Cet article vous a donné les bases. Maintenant, pratiquez chaque commande sur un vrai terminal avec nos labs interactifs guidés.
Commencer les labs Terraform