Outre le travail sur HCL2 fusionnant HIL (le langage d’interpolation) et HCL (le langage de configuration) en un seul, l’arrivée de syntaxe plus commune comme le for et des slides dédiés son adorable chat, force est de constater que l’outil à acquis une certaine maturité.
L’époque où il fallait user de “hack” et autre contournement plus ou moins élégant est maintenant majoritairement dernière nous.
Une chose à toutefois attiré mon attention, il s’agit d’un bref passage détaillant une fonctionnalité qui restait encore à implanter dans cette version : le support de la clause depends_on pour les modules.
L’idée est bonne, et très attendu par une partie de la communauté d’utilisateur… mais pas encore terminé d’être implémenté car demandant une refonte du cœur de Terraform, et notamment de sa façon de générer le graphe décrivant les relations entre les providers, data et ressources que l’on a défini.
Hé oui ce n’est pas encore si derrière nous que ça, mais bonne nouvelle ! Il est possible d’exprimer une certaine notion de dépendance explicite entre les modules.
C’est l’heure de tester ! L’objectif est de faire écrire à Terraform “Bonjour Synograph France” dans un fichier avec le même module, en trois appels distincts, responsable donc d’un mot à la fois.
module "bonjour" {
source = "./print_string"
string = "Bonjour "
}
module "synograph" {
source = "./print_string"
string = "Synograph "
}
module "france" {
source = "./print_string"
string = "France"
}
resource "null_resource" "print_string" {
provisioner "local-exec" {
command = "printf ${var.string} >> /tmp/testTerraform"
}
}
variable "string" {
default = ""
}