Terraform · HCL

HCL

Lisez et écrivez les blocs, arguments, valeurs, expressions et références de base du langage HCL.

Leçon disponible
20 min

Objectifs

  • Distinguer un bloc HCL de ses arguments.
  • Utiliser strings, numbers, booleans, lists et maps.
  • Lire une adresse de resource et une référence à un attribut.
  • Commenter et organiser une configuration simple.

Comprendre HashiCorp Configuration Language

HCL, HashiCorp Configuration Language, est le langage utilisé par Terraform. Sa syntaxe est conçue pour décrire des objets et leurs relations de manière lisible.

Un fichier .tf contient des blocs. Chaque bloc possède un type, parfois des labels, puis un corps composé d’arguments, d’expressions et éventuellement de blocs imbriqués.

Blocs, labels et arguments

Dans resource "TYPE" "LOCAL_NAME", TYPE indique l’objet du provider et LOCAL_NAME est le nom interne choisi dans ce module. Les lignes bucket et region sont des arguments.

versions.tf, providers.tf et main.tf
terraform {
  required_providers {
    aws = {
      source = "hashicorp/aws"
    }
  }
}

provider "aws" {
  region = "eu-west-3"
}

resource "aws_s3_bucket" "example" {
  bucket = "example-training-bucket"
}

Le nom local example n’est pas le nom distant du bucket. Il sert à former l’adresse Terraform aws_s3_bucket.example.

Valeurs et expressions

HCL accepte des chaînes, nombres, booléens et collections. Une expression peut être une valeur littérale, un calcul, une condition ou une référence vers une variable, une ressource ou un module.

Types courants et map
locals {
  environment = "dev"
  replicas    = 2
  enabled     = true
  zones       = ["eu-west-3a", "eu-west-3b"]
  tags = {
    Environment = "dev"
    ManagedBy   = "Terraform"
  }
}
Référence à un attribut
aws_s3_bucket.example.id

Commentaires et formatage

Les commentaires expliquent une décision utile, sans répéter chaque ligne. HCL accepte # et // pour une ligne, ainsi que /* ... */ pour un commentaire sur plusieurs lignes.

Commentaires HCL
# Bucket pédagogique
// Cette valeur n’est pas un secret
/* Bloc temporaire
   à supprimer après la formation */
Formater et valider
terraform fmt
terraform validate

Mini résumé

  • HCL organise la configuration en blocs, labels et arguments.
  • Les expressions manipulent des valeurs et des références.
  • resource "TYPE" "LOCAL_NAME" définit l’adresse locale d’une resource.
  • terraform fmt applique le format canonique des fichiers.

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. Dans resource "aws_s3_bucket" "logs", que représente logs ?
2. Quelle expression référence l’identifiant du bucket example ?
3. Quelle structure convient à des tags composés de clés et de valeurs ?