Terraform est un outil d’Infrastructure as Code (IaC) qui permet de définir, provisionner et gérer l’infrastructure cloud de manière déclarative et reproductible.
Cycle de vie
Les commandes fondamentales du workflow.
- Cycle de vie — Vue d’ensemble — hub du workflow
- terraform init — initialisation (providers, modules, backend)
- terraform plan — prévisualiser les changements
- terraform apply — appliquer les changements
- terraform destroy — détruire l’infrastructure
- terraform taint — ⚠️ forcer la recréation d’une ressource (déconseillé →
-replace)
State
Le fichier d’état : source de vérité de Terraform.
- State — Vue d’ensemble — hub gestion du state
- terraform state — list, show, rm, mv, replace-provider, force-unlock
- terraform import — associer une ressource existante au state
- terraform state pull et push — gestion manuelle, migration de backend
- Backend — Configuration et option — où et comment stocker le state
- terraform refresh — ⚠️ synchroniser le state avec l’infra (déconseillé →
-refresh-only)
Qualité et code
Valider et maintenir la qualité du code HCL.
- Qualité et code — Vue d’ensemble — hub qualité
- terraform fmt — formatage selon les conventions
- terraform validate — validation syntaxique et logique
- terraform get — télécharger / mettre à jour les modules
- terraform test — tests automatisés (TF 1.6+)
Inspection
Inspecter l’état, déboguer et visualiser.
- Inspection — Vue d’ensemble — hub inspection
- terraform show — afficher le state ou un plan
- terraform console — tester des expressions HCL
- terraform output — afficher les outputs
- terraform graph — graphe de dépendances (Graphviz)
- terraform metadata — lister les fonctions disponibles (built-in + providers)
- terraform modules — lister tous les modules déclarés dans la configuration
Workspaces
Gérer plusieurs environnements dans le même backend.
- Workspaces — Vue d’ensemble — hub workspaces
- terraform workspace — new, select, list, delete
Providers
Gérer les plugins qui connectent Terraform aux APIs cloud.
- Providers — Vue d’ensemble — hub providers
- terraform providers — lister et verrouiller les versions
- terraform login — authentification Terraform Cloud/Enterprise
Divers
- terraform version — version de Terraform et des providers installés
- Commandes déconseillées — synthèse des alternatives modernes (
taint,refresh)
Options globales
(utilisables avec toutes les commandes, avant le sous-commande)
-chdir=RÉPERTOIRE # changer le répertoire de travail
-help # afficher l'aide d'une commande
-version # alias de terraform versionVariables d’environnement utiles
TF_LOG=DEBUG # niveau de log (TRACE, DEBUG, INFO, WARN, ERROR)
TF_LOG_PATH=tf.log # écrire les logs dans un fichier
TF_CLI_ARGS="-no-color" # arguments globaux
TF_VAR_region=eu-west-1 # définir une variable
TF_WORKSPACE=prod # sélectionner un workspace
TF_DATA_DIR=.terraform2 # répertoire alternatif pour les pluginsSyntaxe HCL
Le langage de configuration Terraform : blocs, types, fonctions et modules.
- HCL — Vue d’ensemble — hub syntaxe HCL
- Blocs fondamentaux — resource, data, variable, output, locals, provider, terraform
- Types et expressions — types, interpolation, conditions, for, dynamic
- Meta-arguments — count, for_each, depends_on, provider, lifecycle
- Fonctions HCL — string, collection, réseau, encodage, hash, date
- Modules HCL — créer et consommer des modules, registry
Quiz
- quizz final terraform — tester ses connaissances Terraform
Liens croisés
- Linux Réseau — Vue d’ensemble — commandes Linux utiles lors du déploiement