DevOps
Terraform

Terraform

Terraform est un outil d’Infrastructure as Code (IaC) permettant de décrire, provisionner et gérer des ressources cloud ou on-premise de façon déclarative. Il fonctionne avec de nombreux fournisseurs (AWS, Azure, GCP, etc.) et facilite la reproductibilité et la traçabilité de l’infrastructure.

Installation sur Linux

Téléchargez la dernière version depuis terraform.io ou utilisez :

sudo apt update
sudo apt install -y wget unzip
wget https://releases.hashicorp.com/terraform/1.8.5/terraform_1.8.5_linux_amd64.zip
unzip terraform_1.8.5_linux_amd64.zip
sudo mv terraform /usr/local/bin/
terraform version

Opérations classiques

Création d'une infra

  1. Créez un fichier main.tf :
    provider "aws" {
      region = "eu-west-1"
    }
    
    resource "aws_s3_bucket" "bucket" {
      bucket = "mon-bucket-exemple"
    }
  2. Initialisez le projet :
    terraform init
  3. Prévisualisez les changements :
    terraform plan
  4. Appliquez la configuration :
    terraform apply

Modification d'une infra

Modifiez le fichier .tf (ex : changez le nom du bucket), puis :

terraform plan
terraform apply

Ajout d'inputs et d'outputs

Utilisez des variables pour rendre votre code réutilisable :

variables.tf :

variable "bucket_name" {
  description = "Nom du bucket S3"
  type        = string
}

main.tf :

resource "aws_s3_bucket" "bucket" {
  bucket = var.bucket_name
}

outputs.tf :

output "bucket_arn" {
  value = aws_s3_bucket.bucket.arn
}

Lancez :

terraform apply -var="bucket_name=mon-bucket-demo"

Nettoyage d'une infra

Pour supprimer toutes les ressources créées :

terraform destroy

Stockage du state à distance

Le fichier terraform.tfstate contient l’état de l’infrastructure. Pour le travail en équipe, stockez-le à distance (ex : S3) :

terraform {
  backend "s3" {
    bucket = "mon-bucket-tfstate"
    key    = "state/terraform.tfstate"
    region = "eu-west-1"
  }
}

Initialisez le backend :

terraform init

Génération d'un graphique

Il est possible de générer un graphique à l'aide de la librairie Graphviz

Pour cela il faut installer Graphviz

sudo apt install graphviz

Puis, executer la commande suivante

terraform graph  | dot -Tsvg -Gfontcolor=blue -Glabel="My AWS infrastructure" > graph.svg

Bonnes pratiques

  • Versionnez vos fichiers .tf avec git.
  • Utilisez des workspaces pour gérer plusieurs environnements (dev, prod).
  • Séparez les variables sensibles (credentials) dans des fichiers non versionnés.
  • Relisez le plan (terraform plan) avant chaque apply.
  • Utilisez des modules pour factoriser le code.

Ressources utiles