Terraform · Resources

Resources

Décrivez des objets gérés, leurs attributs et leurs dépendances avant d’inspecter le plan.

Leçon disponible
20 min

Objectifs

  • Lire un bloc resource et son adresse.
  • Distinguer arguments configurés et attributs exportés.
  • Comprendre le graphe et les dépendances implicites.
  • Utiliser depends_on seulement lorsque la relation n’est pas exprimable autrement.

Le cœur d’une configuration Terraform

Une resource représente un objet que Terraform peut créer, lire, modifier ou supprimer grâce à un provider. Son type vient du provider et son nom local est choisi dans le module.

Terraform construit un graphe de dépendances. Il peut ainsi ordonner les opérations et paralléliser celles qui sont indépendantes.

Type, nom local, arguments et attributs

Dans aws_s3_bucket.logs, aws_s3_bucket est le type et logs le nom local. bucket est un argument configuré ; id est un attribut que le provider expose après lecture ou création.

Bucket et output
resource "aws_s3_bucket" "logs" {
  bucket = "example-training-logs"
}

output "bucket_id" {
  value = aws_s3_bucket.logs.id
}

Dépendance implicite par référence

La référence aws_s3_bucket.logs.id indique que le bloc de protection dépend du bucket. Terraform déduit cette relation sans depends_on explicite.

Dépendance explicite dans les données, implicite pour Terraform
resource "aws_s3_bucket_public_access_block" "logs" {
  bucket = aws_s3_bucket.logs.id

  block_public_acls       = true
  block_public_policy     = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}

depends_on et revue du plan

depends_on sert pour une dépendance réelle que les références ne révèlent pas, par exemple un effet indirect externe. Il rend le graphe moins précis et peut provoquer davantage de valeurs inconnues dans le plan : préférez les références implicites lorsqu’elles sont possibles.

Examiner le graphe de changements
terraform plan

Un exemple HCL n’est pas une preuve qu’un changement est sûr. Contrôlez le provider, le compte, la région, les coûts et les suppressions du plan.

Mini résumé

  • Une resource possède un type de provider et un nom local.
  • Les arguments configurent l’objet ; les attributs peuvent être référencés.
  • Les références créent des dépendances implicites dans le graphe.
  • terraform plan permet de relire les actions proposées.

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. Quelle est l’adresse de la resource nommée logs de type aws_s3_bucket ?
2. Comment privilégier une dépendance entre deux resources ?
3. Que faut-il faire avant d’appliquer une nouvelle resource ?