Initialise un répertoire de travail Terraform : télécharge les providers, les modules et configure le backend.

À exécuter à chaque nouveau projet, après ajout d’un provider/module, ou changement de backend.


Options principales

OptionDéfautDescription
-backend=true|falsetrueConfigure le backend (désactiver pour travailler hors connexion)
-upgradenonMet à jour les providers et modules vers les dernières versions compatibles
-get=true|falsetrueTélécharge les modules déclarés
-input=true|falsetrueDemande les valeurs manquantes de manière interactive
-lock=true|falsetrueVerrouille le state pendant l’init
-verify-plugins=true|falsetrueVérifie les signatures des plugins
-reconfigurenonRéinitialise le backend sans migration (ignore l’état existant)
-migrate-statenonMigre le state vers le nouveau backend configuré

Exemples

# Init standard
terraform init
 
# Init avec mise à jour des providers
terraform init -upgrade
 
# Init sans configurer le backend (dev local, pas d'accès cloud)
terraform init -backend=false
 
# Init non-interactif (CI/CD)
terraform init -input=false
 
# Changer de backend et migrer le state
terraform init -migrate-state
 
# Réinitialiser le backend sans migrer (repart de zéro)
terraform init -reconfigure

Ce que terraform init fait concrètement

terraform init
   │
   ├── Télécharge les providers déclarés dans required_providers
   │       → stockés dans .terraform/providers/
   │
   ├── Télécharge les modules déclarés
   │       → stockés dans .terraform/modules/
   │
   ├── Configure le backend
   │       → s'authentifie et vérifie l'accès au state distant
   │
   └── Crée .terraform.lock.hcl
           → verrouille les versions exactes des providers

Fichiers créés

.terraform/
├── providers/
│   └── registry.terraform.io/hashicorp/aws/5.x.x/linux_amd64/
├── modules/
│   └── (modules téléchargés)
└── terraform.tfstate          ← backend local

.terraform.lock.hcl            ← versions verrouillées des providers (à committer)

En relation avec