Terraform : Gérer votre infrastructure comme du code

Terraform : Gérer votre infrastructure comme du code

Pierre Durand
05 mars 2025

Terraform : Gérer votre infrastructure comme du code

L’Infrastructure as Code (IaC) a révolutionné la façon dont nous gérons nos environnements cloud. Parmi les outils d’IaC disponibles, Terraform de HashiCorp s’est imposé comme l’un des plus populaires et des plus puissants. Dans cet article, nous allons explorer ce qu’est Terraform, comment il fonctionne et pourquoi vous devriez l’adopter.

Qu’est-ce que Terraform ?

Terraform est un outil open-source qui permet de définir et de provisionner l’infrastructure à l’aide de code déclaratif. Au lieu de créer manuellement des ressources via des interfaces web ou des scripts impératifs, vous décrivez l’état souhaité de votre infrastructure dans des fichiers de configuration.

Les principaux avantages de Terraform incluent :

  • Multi-cloud : Fonctionne avec AWS, Azure, Google Cloud, et bien d’autres
  • Déclaratif : Vous décrivez ce que vous voulez, pas comment le faire
  • Idempotent : Vous pouvez appliquer la même configuration plusieurs fois sans effets secondaires
  • Plan d’exécution : Prévisualisation des changements avant leur application
  • Gestion d’état : Suivi de l’état de l’infrastructure

Comment fonctionne Terraform ?

Terraform utilise un langage déclaratif appelé HashiCorp Configuration Language (HCL). Voici un exemple simple de configuration Terraform pour créer une instance EC2 sur AWS :

provider "aws" {
  region = "eu-west-3"
}

resource "aws_instance" "web_server" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
  
  tags = {
    Name = "WebServer"
    Environment = "Production"
  }
}

Le workflow Terraform se compose de trois étapes principales :

  1. terraform init : Initialise le répertoire de travail, télécharge les plugins nécessaires
  2. terraform plan : Crée un plan d’exécution, montrant ce qui sera fait
  3. terraform apply : Applique les changements pour atteindre l’état souhaité

Concepts clés de Terraform

Providers

Les providers sont des plugins qui permettent à Terraform d’interagir avec différentes plateformes et services. Exemples :

provider "aws" {
  region = "eu-west-3"
}

provider "google" {
  credentials = file("account.json")
  project     = "my-project"
  region      = "europe-west1"
}

Resources

Les resources représentent les éléments d’infrastructure que vous souhaitez créer :

resource "aws_vpc" "main" {
  cidr_block = "10.0.0.0/16"
  
  tags = {
    Name = "MainVPC"
  }
}

Variables

Les variables permettent de paramétrer vos configurations :

variable "environment" {
  description = "Environment (dev, staging, prod)"
  type        = string
  default     = "dev"
}

resource "aws_instance" "example" {
  # ...
  tags = {
    Environment = var.environment
  }
}

Outputs

Les outputs permettent d’extraire des informations de votre infrastructure :

output "instance_ip_addr" {
  value       = aws_instance.web_server.public_ip
  description = "The public IP address of the web server"
}

Modules

Les modules sont des unités réutilisables de configuration Terraform :

module "vpc" {
  source = "./modules/vpc"
  
  vpc_cidr = "10.0.0.0/16"
  environment = var.environment
}

Bonnes pratiques avec Terraform

1. Versionnez votre code

Utilisez Git ou un autre système de contrôle de version pour suivre les changements de votre code Terraform.

2. Utilisez des modules

Créez des modules réutilisables pour standardiser votre infrastructure et éviter la duplication de code.

3. Gérez l’état à distance

Stockez l’état Terraform dans un backend distant (comme S3 + DynamoDB) pour permettre la collaboration en équipe :

terraform {
  backend "s3" {
    bucket         = "terraform-state-bucket"
    key            = "prod/terraform.tfstate"
    region         = "eu-west-3"
    dynamodb_table = "terraform-locks"
    encrypt        = true
  }
}

4. Utilisez des workspaces

Les workspaces permettent de gérer plusieurs environnements avec le même code :

# Créer un workspace pour la production
terraform workspace new prod

# Sélectionner un workspace
terraform workspace select prod

# Lister les workspaces
terraform workspace list

5. Validez votre code

Utilisez terraform validate et des outils comme tflint pour vérifier votre code avant de l’appliquer.

Cas d’usage courants

1. Création d’un environnement complet

Terraform excelle dans la création d’environnements complets, comprenant réseau, calcul, stockage et services managés.

2. Infrastructure multi-cloud

Gérez des ressources sur différents fournisseurs cloud avec une approche cohérente.

3. Environnements éphémères

Créez et détruisez rapidement des environnements de test ou de développement.

Conclusion

Terraform a transformé la façon dont nous gérons l’infrastructure cloud en permettant une approche programmable, versionnable et reproductible. En adoptant l’Infrastructure as Code avec Terraform, vous pouvez :

  • Accélérer le déploiement de votre infrastructure
  • Réduire les erreurs humaines
  • Améliorer la collaboration entre les équipes
  • Documenter votre infrastructure via le code
  • Standardiser vos déploiements

Chez Whims, nous utilisons Terraform quotidiennement pour aider nos clients à automatiser leur infrastructure et à adopter les meilleures pratiques DevOps. Si vous souhaitez en savoir plus sur comment Terraform peut vous aider, contactez-nous !

Partagez cet article

Vous avez aimé cet article ?

Découvrez d'autres contenus similaires

Voir tous les articles