Feuille de rappel Terraform - commandes utiles et exemples
La liste de toutes les commandes terraform
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.
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"
- CLI :
- 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
ouTF_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
- https://developer.hashicorp.com/terraform
- Fiche de référence Docker
- Fiche de référence Docker Compose - Les commandes les plus utiles avec des exemples
- Fiche de référence Kubernetes
- Déployer un projet Flutter avec backend vers AWS Amplify
- Déployer un site généré par Hugo vers AWS S3
- Performance des lambdas AWS : JavaScript vs Python vs Golang
- Lambdas stratifiées avec AWS SAM et Python
- AWS SAM + AWS SQS + Python PowerTools
- Minio en tant qu’alternative à AWS S3. Aperçu et installation de Minio