HCL (HashiCorp Configuration Language) est le langage déclaratif utilisé pour écrire les configurations Terraform. Il est conçu pour être lisible par les humains et parseable par les machines.
Notes détaillées
| Note | Contenu |
|---|---|
| Blocs fondamentaux | resource, data, variable, output, locals, provider, terraform, module |
| Types et expressions | Types primitifs, interpolation, références, conditions, boucles for |
| Meta-arguments | count, for_each, depends_on, provider, lifecycle |
| Fonctions HCL | Fonctions built-in : string, collection, encodage, réseau, date, hash |
| Modules HCL | Structure d’un module, inputs/outputs, registry, composition |
Structure d’un projet Terraform
mon-projet/
├── main.tf ← ressources principales
├── variables.tf ← déclaration des variables
├── outputs.tf ← déclaration des outputs
├── versions.tf ← required_providers, required_version
├── providers.tf ← configuration des providers
├── locals.tf ← valeurs locales calculées
├── data.tf ← data sources
├── terraform.tfvars ← valeurs des variables (non commité si secrets)
├── .terraform.lock.hcl ← verrou des providers (à committer)
└── modules/
└── vpc/ ← module local
├── main.tf
├── variables.tf
└── outputs.tf
Anatomie d’un bloc HCL
TYPE "LABEL_1" "LABEL_2" {
attribut_1 = valeur
attribut_2 = expression
bloc_imbriqué {
attribut = valeur
}
}
# Exemples réels :
resource "aws_instance" "web" { ... } # type + 2 labels
provider "aws" { ... } # type + 1 label
terraform { ... } # type sans labelEn relation avec
- Synthèse Terraform — hub principal
- Blocs fondamentaux — les blocs de base
- Meta-arguments — count, for_each, lifecycle