Terraform est un outil Open Source de HashiCorp qui permet de définir, fournir et gérer l’infrastructure via des fichiers de configuration déclaratifs. En adoptant Infrastructure as Code (IaC), vous pouvez versionner, réutiliser et automatiser le provisionnement de ressources cloud et on-premise.
Prérequis
- Un compte sur un provider cloud (AWS, GCP, Azure…)
- Terraform installé (version ≥ 1.5)
- Accès API (clé et secret) configuré pour votre provider
- Un éditeur de texte supportant HCL (Visual Studio Code, Vim…)
Installation de Terraform
1. Téléchargement de l’archive officielle
wget https://releases.hashicorp.com/terraform/1.5.7/terraform_1.5.7_linux_amd64.zip
unzip terraform_1.5.7_linux_amd64.zip
sudo mv terraform /usr/local/bin/
2. Vérification de l’installation
terraform version
Vous devriez voir :
Terraform v1.5.7
on linux_amd64
Écriture de votre premier fichier de configuration
Créez un fichier main.tf
pour provisionner une instance EC2 sur AWS :
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.0"
}
}
required_version = ">= 1.5"
}
provider "aws" {
region = "eu-west-3"
access_key = var.aws_access_key
secret_key = var.aws_secret_key
}
resource "aws_instance" "web" {
ami = "ami-0abcdef1234567890"
instance_type = "t3.micro"
tags = {
Name = "Terraform-Web"
}
}
variable "aws_access_key" {}
variable "aws_secret_key" {}
Workflow Terraform
- terraform init : initialise le projet et télécharge les providers.
- terraform plan : prévisualise les changements.
- terraform apply : applique la configuration.
- terraform destroy : détruit l’infrastructure provisionnée.
Modules et réutilisation
- Créez des modules pour regrouper des ressources :
modules/ └── ec2-instance/ ├── main.tf ├── variables.tf └── outputs.tf
- Utilisez les modules via :
module "web" { source = "./modules/ec2-instance" aws_access_key = var.aws_access_key aws_secret_key = var.aws_secret_key }
Bonnes pratiques
- Versionnez vos fichiers
.tf
dans Git. - Stockez l’état (
.tfstate
) de manière sécurisée (backend S3, GCS…). - Séparez les environnements (dev, staging, prod) par workspaces ou backends.
- Validez votre configuration avec
terraform validate
. - Automatisez les runs via CI/CD (GitHub Actions, GitLab CI…).
Avantages clés
- Déclaratif : décrivez l’infrastructure souhaitée, Terraform s’occupe du reste
- Provider-agnostic : fonctionnel sur AWS, Azure, GCP, VMware…
- Planification : aperçu des changements avant exécution
- Communauté : nombreux modules disponibles sur Terraform Registry
Conclusion
Terraform simplifie la gestion de l’infrastructure en la traitant comme du code. Grâce à son workflow clair et à sa modularité, il devient un allié essentiel pour les équipes DevOps souhaitant fiabiliser et automatiser leurs déploiements.