Fiche de référence Terraform - commandes utiles et exemples

La liste de toutes les commandes Terraform

Sommaire

Voici une fiche de référence Terraform complète avec des commandes essentielles, des éléments de configuration, la gestion des ressources, des modules, des variables, la gestion de l’état et des meilleures pratiques.

Terraform est un outil open-source d’infrastructure-as-code (IaC) développé par HashiCorp, qui permet aux utilisateurs de définir et de provisionner une infrastructure auprès de plusieurs fournisseurs de cloud (par exemple, AWS, Azure, GCP) en utilisant des fichiers de configuration déclaratifs. Son objectif principal est d’automatiser le provisionnement de l’infrastructure, d’assurer la cohérence et de réduire les erreurs manuelles. Terraform prend en charge les flux de travail multi-cloud, modulaires et basés sur l’état, ce qui en fait un pilier des pratiques DevOps modernes.

Pour plus d’outils et de flux de travail pour les développeurs, consultez Outils pour développeurs : Le guide complet des flux de travail de développement modernes.

étudiant utilisant terraform

Avantages clés de Terraform :

  • Syntaxe déclarative : Définissez les états d’infrastructure souhaités dans le code.
  • Indépendance du fournisseur : Fonctionne avec AWS, Azure, GCP, Kubernetes et plus encore.
  • Gestion de l’état : Suit les modifications de l’infrastructure pour éviter les conflits.

Guide d’installation et de configuration

https://developer.hashicorp.com/terraform/tutorials#get-started

Le processus d’installation de Terraform est assez simple.

  • Linux (Ubuntu/Debian) :

    wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
    sudo apt update && sudo apt install terraform
    
  • Windows (WSL) :

    wget -O terraform.zip https://releases.hashicorp.com/terraform/1.5.5/terraform_1.5.5_windows_amd64.zip
    unzip terraform.zip
    
  • macOS (Homebrew) :

    brew install terraform
    

Pour améliorer la productivité dans le terminal lors de l’utilisation de Terraform, consultez Raccourcis clavier Ubuntu : Fiche de référence complète.

Vérification

terraform --version

Commandes CLI Terraform

Voici la liste de toutes les commandes Terraform :

Commande Description
terraform init Initialiser un nouveau ou un répertoire de configuration existant
terraform validate Vérifier si la configuration est valide
terraform plan Afficher le plan d’exécution sans apporter de modifications
terraform apply Appliquer les modifications nécessaires pour atteindre l’état souhaité
terraform destroy Détruire l’infrastructure gérée par Terraform
terraform fmt Reformater les fichiers de configuration selon le style standard
terraform show Afficher l’état actuel ou le plan
terraform refresh Mettre à jour l’état avec l’infrastructure réelle
terraform providers Afficher les fournisseurs utilisés dans la configuration
terraform graph Visualiser les dépendances des ressources sous forme de graphe
terraform workspace list Lister tous les espaces de travail disponibles
terraform workspace new Créer un nouvel espace de travail
terraform workspace select Basculer vers un espace de travail spécifié
terraform workspace show Afficher le nom de l’espace de travail actuel
terraform workspace delete Supprimer un espace de travail spécifié
terraform output Afficher les valeurs de sortie du fichier d’état
terraform import Importer une ressource existante dans Terraform
terraform taint Marquer une ressource pour une recréation au prochain apply
terraform untaint Retirer la marque “tainted” d’une ressource
terraform state list Lister les ressources dans le fichier d’état
terraform state show Afficher les attributs d’une seule ressource dans l’état

Essentiels de configuration

Extensions de fichiers

  • .tf : Fichiers de configuration principaux (syntaxe HCL)
  • .tfvars : Valeurs de variables

Types de blocs Terraform

  • Exemple de fournisseur
    provider "aws" {
      region = "us-east-1"
    }
    
  • Exemple de ressource
    resource "aws_instance" "web" {
      ami           = "ami-0abcdef"
      instance_type = "t2.micro"
    }
    
  • Exemple de variable
    variable "instance_count" {
      type    = number
      default = 2
    }
    
  • Exemple de sortie
    output "instance_ip" {
      value = aws_instance.web.public_ip
    }
    
  • Exemple de module
    module "vpc" {
      source = "./modules/vpc"
      cidr_block = var.vpc_cidr
    }
    

Travail avec les variables

  • Déclaration de variables
    variable "region" {
      description = "Région AWS"
      default     = "us-east-1"
    }
    
  • Attribution de valeurs
    • CLI : terraform apply -var="region=us-west-2"
    • Fichier tfvars : terraform apply -var-file="prod.tfvars"
  • Types : string, number, bool, list, map, object

Gestion de l’état

  • Fichier d’état : terraform.tfstate
  • État distant (Exemple S3)
    backend "s3" {
      bucket = "my-tf-state"
      key    = "state.tfstate"
      region = "us-east-1"
    }
    
  • Afficher l’état :
    terraform show
    terraform state list

Boucles et conditionnels

  • Count
    resource "aws_instance" "web" {
      count = 3
      ...
    }
    
  • For_each
    resource "aws_s3_bucket" "b" {
      for_each = var.bucket_names
      bucket   = each.value
    }
    
  • Conditionnels
    instance_type = var.env == "prod" ? "t2.large" : "t2.micro"
    

Fonctions

  • Interpolation de chaînes :
    resource "aws_s3_bucket" "example" { bucket = "my-bucket-${var.env}" }
  • Exemples de liste et de map :
    locals {
      my_map = { a = 1, b = 2 }
    }
    

Provisionneurs

Utilisés pour le bootstrapping des ressources. Exemple :

resource "aws_instance" "web" {
  ...
  provisioner "local-exec" {
    command = "echo Instance created"
  }
}

Meilleures pratiques

  • Contrôle de version de tous les fichiers .tf
  • Verrouiller les versions des fournisseurs pour assurer des déploiements cohérents
  • Backend distant pour la gestion de l’état (S3, Azure Blob, etc.)
  • Chiffrer les fichiers d’état dans les backends distants
  • Modulariser l’infrastructure en utilisant des modules réutilisables
  • Documenter vos configurations
  • Tester en staging avant la production

Références supplémentaires

  • Aide : terraform --help ou [commande] --help pour l’aide spécifique à une commande
  • Débogage : Définir TF_LOG=INFO ou TF_LOG=DEBUG pour des journaux verbeux
  • Mise en forme : terraform fmt
  • Encodage : Pour les opérations d’encodage/décodage Base64, consultez Encodage - décodage Base64 sur Windows, Linux et Mac

Cette fiche de référence fournit une référence d’accès rapide aux aspects les plus courants et avancés de l’utilisation de Terraform - des commandes aux meilleures pratiques - la rendant pratique aussi bien pour les débutants que pour les utilisateurs avancés. Passez une excellente journée !

Liens utiles