Feuille de rappel Terraform - commandes utiles et exemples

La liste de toutes les commandes terraform

Sommaire

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

Terraform est un outil open source de gestion d’infrastructure-as-code (IaC) développé par
HashiCorp,
permettant aux utilisateurs de définir et de provisionner des infrastructures sur plusieurs fournisseurs de cloud (par exemple, AWS, Azure, GCP) à l’aide de fichiers de configuration déclaratifs.
Son objectif principal est d’automatiser la provisioning de l’infrastructure, d’assurer la cohérence et de réduire les erreurs manuelles.
Terraform prend en charge les workflows multi-cloud, modulaires et basés sur l’état, en faisant ainsi une pierre angulaire des pratiques DevOps modernes.

étudiant utilisant Terraform

Avantages clés de Terraform :

  • Syntaxe déclarative : Définir l’état souhaité de l’infrastructure dans le code.
  • Indépendance par rapport aux fournisseurs : Fonctionne avec AWS, Azure, GCP, Kubernetes et plus encore.
  • Gestion de l’état : Suivi des modifications de l’infrastructure pour éviter les conflits.

Guide d’installation et de configuration

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

L’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
    

Vérification

terraform --version

Commandes de l’interface CLI Terraform

Voici la liste de toutes les commandes Terraform :

Commande Description
terraform init Initialiser un nouveau ou existant répertoire de configuration Terraform
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 changements 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 au format 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 graphique
terraform workspace list Lister tous les workspaces disponibles
terraform workspace new Créer un nouveau workspace
terraform workspace select Passer à un workspace spécifié
terraform workspace show Afficher le nom du workspace actuel
terraform workspace delete Supprimer un workspace spécifié
terraform output Afficher les valeurs de sortie depuis le fichier d’état
terraform import Importer une ressource existante dans Terraform
terraform taint Marquer une ressource pour sa recréation lors de l’application suivante
terraform untaint Désigner une ressource comme non tachée
terraform state list Lister les ressources dans le fichier d’état
terraform state show Afficher les attributs d’une ressource unique dans l’état

Éléments essentiels de la configuration

Extensions de fichiers

  • .tf : Fichiers de configuration principaux (syntaxe HCL)
  • .tfvars : Valeurs des 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"
    }
    
  • Affectation 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 conditions

  • Compteur
    resource "aws_instance" "web" {
      count = 3
      ...
    }
    
  • Pour chaque
    resource "aws_s3_bucket" "b" {
      for_each = var.bucket_names
      bucket   = each.value
    }
    
  • Conditions
    instance_type = var.env == "prod" ? "t2.large" : "t2.micro"
    

Fonctions

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

Provisioners

Utilisés pour le bootstrap des ressources. Exemple :

resource "aws_instance" "web" {
  ...
  provisioner "local-exec" {
    command = "echo Instance créée"
  }
}

Bonnes pratiques

  • Contrôler la 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.)
  • Crypter les fichiers d’état dans les backends distants
  • Modulariser l’infrastructure en utilisant des modules réutilisables
  • Documenter vos configurations
  • Tester en environnement de 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 logs détaillés
  • Formatage : terraform fmt

Cette fiche de référence fournit un accès rapide aux aspects les plus courants et avancés de l’utilisation de Terraform - des commandes aux bonnes pratiques - rendant ainsi le contenu pratique tant pour les débutants que pour les utilisateurs avancés. Bonne journée !

Liens utiles