DevOps Elastic Hayway
Document

SUBSCRIBE TO GET FULL ACCESS TO THE E-BOOKS FOR FREE 🎁SUBSCRIBE NOW

Professional Dropdown with Icon

SUBSCRIBE NOW TO GET FREE ACCESS TO EBOOKS

TerraformLesson 2 / 2411 min readUpdated September 13, 2026

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 premier terraform init qui 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 :

  1. Version affichée ≥ 1.9.0 (cible lab : 1.16.x stable)
  2. init, plan, apply, validate, fmt apparaissent dans l’aide
  3. 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.2 puis tfenv use 1.16.2
  • Dans le projet, required_version = ">= 1.9.0" (ou une contrainte plus serrée) refuse un binaire trop vieux au terraform 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

  1. terraform version ≥ 1.9 (idéalement 1.16.x).
  2. aws sts get-caller-identity OK avec le profil de lab.
  3. Aucune access key dans un fichier .tf ou un commit.
  4. terraform init réussit sur un versions.tf minimal (aws ~> 5.0).
  5. Vous savez où vit le binaire (apt / choco / winget / brew / zip + PATH).
  6. 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 add puis 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.tfstate commité 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 terraform dans le PATH (Snap, apt obsolète, binaire manuel) : which -a terraform puis terraform version.
  • Oublier AWS CLI / profil : Terraform ne remplace pas la config SSO ou ~/.aws.
  • Smoke test init dans 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, .gitignore sur .tfstate et 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.

Share your love

Leave a Reply

Your email address will not be published. Required fields are marked *