Applez Nous: +41 22 518 70 00
Terraform utilise le langage déclaratif HCL (fichiers .tf), lisible par l’humain et analysable par la machine :
# Fichier : main.tf
terraform {
required_version = ">= 1.5.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "eu-central-2" # Région Zurich
}
resource "aws_vpc" "vpc_educasuisse" {
cidr_block = "10.0.0.0/16"
enable_dns_hostnames = true
tags = {
Name = "vpc-educasuisse-production"
Environment = "Prod"
ManagedBy = "Terraform"
}
}
terraform init : Initialise le répertoire de travail, installe les modules et télécharge les binaires des providers nécessaires.terraform plan : Analyse le code local, interroge l’état réel de l’infrastructure dans le cloud et génère un plan d’action prévisionnel (+ pour création, ~ pour modification sur place, – pour destruction).terraform apply : Exécute les appels d’API auprès du cloud pour matérialiser fidèlement le plan validé.terraform destroy : Supprime méthodiquement l’intégralité des ressources déclarées (indispensable pour détruire les plateformes de test éphémères).Le fichier terraform.tfstate est le cœur névralgique de Terraform : il fait le lien entre vos ressources de code et les identifiants réels créés chez l’hyperscaler. En équipe, ce fichier ne doit jamais être stocké dans Git (risque de fuite de mots de passe et de conflits d’écriture) :
# Configuration d'un backend distant avec verrouillage d'état (State Locking)
terraform {
backend "s3" {
bucket = "educasuisse-terraform-state-ch"
key = "prod/infrastructure.tfstate"
region = "eu-central-2"
dynamodb_table = "terraform-locks" # Empêche deux ingénieurs d'appliquer du code en même temps
encrypt = true
}
}
Vérification préalable obligatoire : Ne lancez jamais un
terraform applyen production sans avoir scrupuleusement inspecté la sortie duterraform planpour vous assurer qu’aucune ressource critique (ex: base de données) ne porte le symbole destructif-/+(destroy and recreate replacement).