Terraform · Variables et outputs

Variables et Outputs

Paramétrez vos modules avec des variables typées et exposez seulement les outputs réellement utiles.

Leçon disponible
20 min

Objectifs

  • Déclarer type, default, description et validation d’une variable.
  • Fournir une valeur avec -var, terraform.tfvars ou TF_VAR_*.
  • Créer un output et comprendre sensitive.
  • Éviter de committer des secrets dans les fichiers de valeurs.

Séparer les valeurs de la structure

Les input variables forment l’interface d’entrée d’un module. Elles permettent de réutiliser la même structure avec des valeurs différentes selon l’environnement.

Les outputs forment une partie de l’interface de sortie. Ils peuvent être affichés par Terraform ou consommés par un module parent.

Variables typées et documentées

Une variable peut imposer un type, proposer une valeur par défaut et valider une règle métier. Sans default, elle est obligatoire.

variables.tf
variable "environment" {
  description = "Nom de l'environnement"
  type        = string
  default     = "dev"

  validation {
    condition     = contains(["dev", "staging", "prod"], var.environment)
    error_message = "environment doit être dev, staging ou prod."
  }
}

variable "instance_count" {
  type    = number
  default = 1
}

Fournir des valeurs

Une valeur peut venir d’un fichier terraform.tfvars, d’une option -var ou d’une variable d’environnement préfixée par TF_VAR_. Définissez une convention claire pour éviter les surprises de priorité.

Valeur ponctuelle en ligne de commande
terraform plan -var="environment=staging"
Variable d’environnement reconnue par Terraform
TF_VAR_environment=staging terraform plan
terraform.tfvars sans secret
environment    = "staging"
instance_count = 2

Ne committez jamais un terraform.tfvars ou *.auto.tfvars contenant des mots de passe, tokens ou clés. Utilisez un mécanisme de secrets et l’injection sécurisée de votre plateforme.

Outputs et valeurs sensibles

Un output expose une valeur utile. sensitive = true limite son affichage dans certaines sorties, mais la valeur peut toujours être stockée dans le state.

outputs.tf
output "environment" {
  value = var.environment
}

output "generated_password" {
  value     = random_password.application.result
  sensitive = true
}

sensitive = true ne chiffre ni le state ni la valeur à lui seul. Protégez le backend, les accès, les plans et les sorties d’automatisation.

Mini résumé

  • Les variables définissent l’interface d’entrée d’un module.
  • Types, descriptions et validations détectent plus tôt les mauvaises valeurs.
  • Les outputs exposent seulement les informations utiles.
  • Les secrets ne doivent être ni hardcodés ni commités dans les fichiers de valeurs.

Outils associés

Générer une configuration HCL

Utilisez Terraform HCL Generator pour préparer localement une base AWS, Azure, GCP ou Docker, puis relisez-la avant utilisation.

Ouvrir l’outil

Mini quiz

Trois questions pour vérifier les notions essentielles de la leçon.

1. Quand une input variable est-elle obligatoire ?
2. Quel nom de variable d’environnement fournit environment à Terraform ?
3. Que garantit sensitive = true ?