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.
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é.
terraform plan -var="environment=staging"TF_VAR_environment=staging terraform planenvironment = "staging"
instance_count = 2Ne 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.
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.
Erreur fréquente : considérer sensitive comme du chiffrement
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’outilMini quiz
Trois questions pour vérifier les notions essentielles de la leçon.