Installer Terraform : Linux, Windows et macOS
À la fin de ce tutoriel, vous aurez Terraform installé et vérifié (
terraform version), une CLI AWS déjà prête réutilisée via un profil nommé, et un premierterraform initqui télécharge le provider AWS 5.x — sans ressource facturable.Niveau : Débutant · Temps estimé : 20–30 min · Versions testées : Terraform 1.16.2 (série ≥ 1.9), AWS provider ~> 5.0, AWS CLI v2 · Dernière vérification : 2026-09-10
Slug proposé :
installer-terraform· Série : Terraform · Remplace / fusionne : #1602
Prérequis
- Avoir suivi Découvrir Terraform (
terraform-overview) — concepts IaC, state, plan/apply - Avoir suivi Démarrer avec AWS (
demarrer-avec-aws) : compte sécurisé, utilisateur IAM quotidien, AWS CLI v2 configurée - Un terminal (bash, zsh ou PowerShell) et des droits d’installation (sudo / admin)
- Une connexion Internet pour télécharger le binaire et le provider
Coût estimé : 0 € — aucune ressource AWS créée dans ce tuto. Vérifiez seulement aws sts get-caller-identity avant le smoke test.
Ce tuto n’installe pas AWS CLI. Si
aws --versionéchoue, revenez àdemarrer-avec-aws. Ici, on installe Terraform et on le branche sur le profil CLI déjà prêt.
Ce que nous allons construire
Poste de lab Terraform
├── Binaire terraform (≥ 1.9, ex. 1.16.2) sur Linux / Windows / macOS
├── Vérification : terraform version + terraform -help
├── Auth AWS pour Terraform : profil nommé (ex. lab) / AWS_PROFILE
├── versions.tf minimal (required_version + aws ~> 5.0)
└── Smoke test : terraform init (télécharge le provider, 0 €)
(Schéma à remplacer par une image locale Excalidraw / draw.io, alt : « Install Terraform multi-OS, profil AWS et premier init ».)
Ce guide remplace le post #1602 (terraform-aws-installation, ~313 mots) qui mélangeait AWS CLI, apt-key déprécié et exemples de clés en clair. Contenu original, méthodes d’install modernes, zéro secret dans le HCL.
Étape 1 — Objectif : terraform version qui répond
Vous aurez réussi quand une commande du type suivant affiche une version ≥ 1.9 (idéalement la dernière stable HashiCorp, ici 1.16.2 au moment de la rédaction) :
terraform version
Exemple de sortie attendue (numéros exacts variables) :
Terraform v1.16.2
on linux_amd64
Ensuite, terraform -help doit lister init, plan, apply, destroy, etc. Pas besoin de cloud pour ces deux commandes.
Étape 2 — Prérequis AWS CLI (déjà OK)
Avant d’installer Terraform, confirmez la CLI :
aws --version
aws sts get-caller-identity
La seconde commande doit renvoyer votre Account, UserId et Arn (utilisateur IAM ou rôle SSO). Si ce n’est pas le cas :
- Relisez Démarrer avec AWS pour l’installation CLI v2 et le profil nommé
- Relisez Découvrir Terraform pour le contexte série
Choisissez une Region de lab (ex. eu-west-3) et un profil (ex. lab ou default). Terraform réutilisera la même chaîne d’identité — sans coller de clés dans les fichiers .tf.
Étape 3 — Installer sur Linux (Ubuntu / Debian)
Méthode recommandée : dépôt officiel HashiCorp avec keyring signed-by (ne jamais utiliser apt-key, déprécié).
sudo apt-get update && sudo apt-get install -y wget gpg lsb-release
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-get update && sudo apt-get install -y terraform
terraform version
Alternative zip officiel (utile hors Debian, ou pour épingler un SHA précis) : téléchargez l’archive Linux depuis releases.hashicorp.com/terraform, vérifiez le checksum, décompressez et placez le binaire dans un répertoire du PATH (ex. /usr/local/bin).
RHEL / Fedora / Amazon Linux (bref) : ajoutez le dépôt RPM HashiCorp puis yum / dnf install terraform (voir Install Terraform). Même objectif : un terraform dans le PATH, version ≥ 1.9.
Étape 4 — Installer sur Windows
Trois options courantes ; choisissez-en une.
Chocolatey (si déjà installé) :
choco install terraform -y
terraform version
winget (souvent fiable sur Windows 10/11 récents) :
winget install Hashicorp.Terraform
terraform version
Zip + PATH : téléchargez le zip Windows amd64 depuis les releases HashiCorp, extrayez terraform.exe dans un dossier stable (ex. C:Toolsterraform), puis ajoutez ce dossier à la variable d’environnement Path (Paramètres → Système → À propos → Paramètres système avancés → Variables d’environnement). Rouvrez PowerShell et relancez terraform version.
Si la commande n’est pas trouvée : fermez/rouvrez le terminal, vérifiez le Path, ou utilisez le chemin absolu vers terraform.exe le temps du diagnostic.
Étape 5 — Installer sur macOS
Homebrew (recommandé) :
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
terraform version
Zip officiel : téléchargez le binaire darwin (amd64 ou arm64 selon votre Mac), vérifiez le checksum, placez terraform dans /usr/local/bin ou ~/bin (présent dans le PATH). Sur Apple Silicon, préférez le build arm64.
Mise à jour ultérieure : brew upgrade hashicorp/tap/terraform ou réinstallez depuis le dépôt / zip.
Étape 6 — Vérifier le CLI Terraform
terraform version
terraform -help
Checklist rapide :
- Version affichée ≥ 1.9.0 (cible lab : 1.16.x stable)
init,plan,apply,validate,fmtapparaissent dans l’aide- Pas d’erreur « command not found » / « n’est pas reconnu »
Optionnel : terraform -install-autocomplete (bash/zsh) pour la complétion — confort, pas obligatoire pour la suite.
Étape 7 — (Optionnel) tfenv et épinglage de version
Pour des labs ou une équipe qui doit coller à une version précise :
- tfenv (Linux/macOS) ou équivalent Windows : installez plusieurs binaires et basculez avec
tfenv install 1.16.2puistfenv use 1.16.2 - Dans le projet,
required_version = ">= 1.9.0"(ou une contrainte plus serrée) refuse un binaire trop vieux auterraform init - Documentez la version dans le README du lab ; les package managers suivent souvent la dernière GA
Ne mélangez pas trop d’outils de versionning sur la même machine sans comprendre lequel gagne dans le PATH.
Étape 8 — Auth AWS pour Terraform (sans clés dans le HCL)
Terraform AWS provider lit la même chaîne que la CLI : variables d’environnement, fichier de credentials, profil nommé, ou session SSO.
Bonne pratique lab :
# Exemple : utiliser le profil nommé « lab »
export AWS_PROFILE=lab
export AWS_REGION=eu-west-3 # ou AWS_DEFAULT_REGION
aws sts get-caller-identity
Sous PowerShell :
$env:AWS_PROFILE = "lab"
$env:AWS_REGION = "eu-west-3"
aws sts get-caller-identity
Dans providers.tf, indiquez la Region (et éventuellement profile) — jamais access_key / secret_key en clair :
provider "aws" {
region = "eu-west-3"
profile = "lab" # optionnel si AWS_PROFILE est déjà exporté
# Jamais de access_key / secret_key ici
}
SSO : si votre compte utilise IAM Identity Center, connectez-vous d’abord avec aws sso login --profile lab, puis lancez Terraform avec le même profil. Les sessions expirent : un ExpiredToken se corrige par un nouveau login, pas en collant des clés dans Git.
Étape 9 — Smoke test : versions.tf + terraform init
Créez un dossier vide (aucun apply, aucune ressource payante) :
mkdir -p ~/terraform-smoke && cd ~/terraform-smoke
Créez versions.tf :
terraform {
required_version = ">= 1.9.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
Puis :
terraform init
Succès attendu : Terraform crée .terraform/ et .terraform.lock.hcl, télécharge le provider hashicorp/aws 5.x, et affiche un message du type « Terraform has been successfully initialized ».
Vous pouvez ajouter un providers.tf minimal (Region + profil) et relancer terraform init si besoin. Ne créez aucune resource dans ce smoke test : l’objectif est uniquement de valider binaire + téléchargement provider. Le workflow plan / apply / destroy arrive dans le tuto suivant.
Étape 10 — Checklist de fin de parcours
terraform version≥ 1.9 (idéalement 1.16.x).aws sts get-caller-identityOK avec le profil de lab.- Aucune access key dans un fichier
.tfou un commit. terraform initréussit sur unversions.tfminimal (aws ~> 5.0).- Vous savez où vit le binaire (apt / choco / winget / brew / zip + PATH).
- Prochain tuto : Workflow Terraform (init, plan, apply, destroy).
Nettoyage
Rien à détruire dans AWS. Vous pouvez supprimer le dossier smoke :
cd ~ && rm -rf ~/terraform-smoke
Conservez le binaire Terraform : il servira toute la série. Si vous avez ajouté un dépôt apt/yum uniquement pour le lab et souhaitez le retirer plus tard, documentez-le ; ce n’est pas requis ici.
Erreurs fréquentes
| Symptôme | Cause | Correction |
|---|---|---|
terraform: command not found |
PATH incomplet ou terminal non relancé | Rouvrir le shell ; vérifier Path (Windows) ou /usr/local/bin |
apt-key / warnings dépréciés dans d’anciens tutos |
Méthode obsolète | Utiliser signed-by= + keyring Hashicorp (étape 3) |
terraform init échoue (réseau / proxy) |
Sortie HTTPS bloquée | Autoriser registry.terraform.io et releases HashiCorp |
| Provider AWS « No valid credential sources » | Profil / env non chargés | export AWS_PROFILE=… puis aws sts get-caller-identity |
Tentation de coller des clés dans provider "aws" |
Anti-pattern sécurité | Profil nommé, env vars ou SSO uniquement |
| Version < 1.9 alors que le lab exige ≥ 1.9 | Ancien paquet ou zip | Mettre à jour (brew/apt/choco) ou tfenv vers 1.16.x |
Quiz (3 questions)
1. Quelle méthode d’install Debian/Ubuntu est recommandée en 2026 ?
- A.
apt-key addpuis un dépôt non signé - B. Dépôt HashiCorp avec keyring
signed-by= - C. Copier des access keys AWS dans
/etc/apt
2. Où place-t-on les credentials AWS pour Terraform dans ce lab ?
- A. En dur dans le bloc
provider "aws" - B. Profil nommé /
AWS_PROFILE/ SSO (comme la CLI) - C. Dans le fichier
terraform.tfstatecommité sur Git
3. Que valide le smoke test terraform init de ce tuto ?
- A. La création d’un NAT Gateway facturé
- B. Le téléchargement du provider AWS 5.x sans ressource payante
- C. La suppression automatique du compte AWS
Réponses : 1‑B · 2‑B · 3‑B
Pourquoi / quand soigner l’installation
Un binaire trop vieux (pré-1.9) casse les labs de la série (syntaxe, lockfile S3, comportements provider 5.x). Installez une fois proprement (PATH, version, auth AWS sans clés dans le HCL), puis ne y revenez que pour un bump de version ou un nouveau poste.
Pièges d’installation
- Plusieurs
terraformdans le PATH (Snap, apt obsolète, binaire manuel) :which -a terraformpuisterraform version. - Oublier AWS CLI / profil : Terraform ne remplace pas la config SSO ou
~/.aws. - Smoke test
initdans un dossier sale déjà rempli d’un autre state. - Documenter des clés d’accès dans le dépôt « pour l’équipe » : refusez ; utilisez IAM Identity Center / rôles.
FAQ installation
tfenv est-il obligatoire ? Non, pratique pour jongler entre versions. En CI, épinglez la version explicitement.
Windows vs Linux ? Même workflow après installation ; préféz WSL2 si vos scripts bash de lab cohabitent mal avec PowerShell.
Quelle Region pour le smoke test ? ca-central-1, comme le reste de la série.
Pour aller plus loin
- Doc officielle : Install Terraform, AWS provider 5.x
- Sur ce site : après ce tuto, enchaînez Workflow Terraform (init → plan → apply → destroy)
- Rappel : le state local du smoke test n’a géré aucune ressource ; dès le premier
apply,.gitignoresur.tfstateet budget AWS actif
Maillage série Terraform (P2)
| ← Précédent | Découvrir Terraform (terraform-overview) |
| → Suivant | Workflow Terraform (init, plan, apply, destroy) — à rédiger |
| Aussi | Blocks & language · Providers/resources · State & backend S3+lock |
| Carte | Overview · Install · Workflow · Blocks · Providers · Variables · Locals · Outputs · State · Data sources · Loops · Conditionals · Dynamic blocks · Modules ×2 · Workspaces · Provisioners · EBS · ELB/ALB · IAM · RDS · VPC · Auto Scaling · Route 53 |
Cas réel — versions qui divergent entre laptop et CI
Vous installez Terraform 1.16 en local, le runner CI a encore 1.8 via un cache. Le required_version refuse l’init en CI, ou pire : il passe et le lock file diverge. Pinnez la même série ≥ 1.9 partout (tfenv, asdf, image officielle HashiCorp). Vérifiez terraform version dans le job, pas seulement sur votre machine.
Piège Windows : un terraform Chocolatey ancien reste devant le binaire HashiCorp dans le PATH. Get-Command terraform doit pointer vers le dossier que vous venez d’installer. Côté AWS, un profil nommé lab évite d’écrire des clés ; aws sts get-caller-identity avant le premier init vous épargne une heure de « No valid credential sources ».
À retenir : l’install n’est terminée que lorsque version, provider lock et identité AWS sont reproductibles sur une deuxième machine.
Retour parcours Terraform — hub de la série et leçons sœurs.



