Commandes pour inspecter, gérer et verrouiller les providers Terraform.
terraform providers — lister les providers
# Afficher les providers utilisés et leurs sources
terraform providers
# Exemple de sortie :
# Providers required by configuration:
# .
# ├── provider[registry.terraform.io/hashicorp/aws] ~> 5.0
# ├── provider[registry.terraform.io/hashicorp/random] ~> 3.0
# └── module.vpc
# └── provider[registry.terraform.io/hashicorp/aws] >= 4.0
# Afficher le schéma JSON de tous les providers
terraform providers schema -json
# Schéma d'un provider spécifique
terraform providers schema -json | jq '.provider_schemas["registry.terraform.io/hashicorp/aws"]'terraform providers lock — verrouiller les versions
Met à jour le fichier .terraform.lock.hcl avec les checksums des providers pour toutes les plateformes cibles.
# Mettre à jour le lock file pour la plateforme courante
terraform providers lock
# Verrouiller pour plusieurs plateformes (CI multi-OS)
terraform providers lock \
-platform=linux_amd64 \
-platform=darwin_amd64 \
-platform=windows_amd64
# Depuis un miroir local
terraform providers lock -fs-mirror=/usr/share/terraform/plugins
# Depuis un miroir réseau
terraform providers lock -net-mirror=https://mirrors.exemple.com/terraformPourquoi verrouiller pour plusieurs plateformes ?
Problème : un développeur macOS génère un lock file avec les checksums macOS.
La CI (Linux) rejette le lock file → checksums incompatibles.
Solution : terraform providers lock -platform=linux_amd64 -platform=darwin_amd64
→ le lock file contient les checksums pour les deux plateformes
Déclarer les providers dans .tf
# versions.tf
terraform {
required_version = ">= 1.5"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0" # >= 5.0, < 6.0
}
kubernetes = {
source = "hashicorp/kubernetes"
version = ">= 2.20"
}
random = {
source = "hashicorp/random"
version = "~> 3.0"
}
}
}
# Configurer un provider
provider "aws" {
region = var.region
default_tags {
tags = {
Environment = var.env
ManagedBy = "Terraform"
}
}
}
# Provider aliasé (multi-région)
provider "aws" {
alias = "us-east"
region = "us-east-1"
}En relation avec
- Providers — Vue d’ensemble — hub providers
- terraform init — télécharge les providers selon les versions déclarées
- terraform login — authentification avec Terraform Cloud pour les providers privés