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

NoteContenu
Blocs fondamentauxresource, data, variable, output, locals, provider, terraform, module
Types et expressionsTypes primitifs, interpolation, références, conditions, boucles for
Meta-argumentscount, for_each, depends_on, provider, lifecycle
Fonctions HCLFonctions built-in : string, collection, encodage, réseau, date, hash
Modules HCLStructure 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 label

En relation avec