Sobes.tech
Junior

Qu'est-ce que Terraform?

sobes.tech IA

Réponse de l'IA

Terraform est un outil open source créé par HashiCorp pour gérer l'infrastructure en tant que code (IaC). Il permet de décrire l'infrastructure en utilisant un langage déclaratif HCL (HashiCorp Configuration Language) ou JSON, puis de la déployer, la modifier et la supprimer automatiquement.

Les caractéristiques clés de Terraform :

  • Déclaratif : Vous décrivez l'état souhaité de l'infrastructure, et Terraform détermine les actions nécessaires pour l'atteindre.
  • Immutable : Terraform préfère créer de nouvelles ressources plutôt que de modifier les existantes lors de changements importants de configuration, ce qui augmente la fiabilité et la prévisibilité.
  • Fournisseurs : Supporte un grand nombre de fournisseurs de services cloud (AWS, Azure, GCP), ainsi que d'autres services (Kubernetes, Docker, bases de données) via un système de fournisseurs.
  • État : Terraform suit l'état de l'infrastructure déployée dans un fichier d'état, ce qui lui permet de comprendre l'état actuel et de calculer les changements nécessaires.
  • Modules : Permet de créer des blocs de configuration réutilisables pour organiser le code et simplifier la gestion d'infrastructures complexes.
  • Planification : Avant d'appliquer des changements, Terraform affiche un plan d'actions qui sera exécuté, aidant à éviter des conséquences inattendues.

Le cycle de vie typique avec Terraform comprend les étapes suivantes :

  1. Initialisation (terraform init) : Chargement des fournisseurs et modules nécessaires.
    terraform init
    // Initialise le répertoire de travail
    
  2. Planification (terraform plan) : Génère un plan d'exécution montrant quels ressources seront créées, modifiées ou supprimées.
    terraform plan
    // Crée et affiche le plan d'exécution
    
  3. Application (terraform apply) : Exécute le plan pour créer ou modifier l'infrastructure.
    terraform apply
    // Applique le plan à l'infrastructure cible
    
  4. Suppression (terraform destroy) : Supprime toutes les ressources gérées par la configuration actuelle de Terraform.
    terraform destroy
    // Supprime toutes les ressources gérées par l'état actuel de Terraform
    

Exemple d'une description simple d'une ressource en HCL :

resource "aws_instance" "example" {
  # Type de ressource (instance AWS) et son nom dans la configuration
  ami           = "ami-0abcdef1234567890" # ID de l'image AMI
  instance_type = "t2.micro"            # Type d'instance
  tags = {
    # Étiquettes pour la ressource
    Name = "example-instance"
  }
}

Terraform simplifie et automatise considérablement la gestion de l'infrastructure, la rendant plus prévisible, évolutive et versionnable.