TIPS | Terraform Conditional Resource 🤷
L’organisation de la configuration d’un projet terraform est essentielle pour la maintenabilité du code.
Nous verrons ici comment mutualiser certaines configurations de ressources de manière dynamique et conditionnelle.
Petit spoil, il n’y a pas de if/else …
Nous souhaitons décrire notre configuration dans un module shared
.
|
|
Prenons l’exemple de la création d’un bucket Google Cloud Storage, il est courant d’avoir recours à un bucket pour les développeurs ou les tests en local.
Nous hébergerons ce bucket sur l’environnement de staging afin de ne pas créer un environnement uniquement pour cela.
Ainsi, nous souhaitons créer 2 buckets sur l’environnement de staging.
bucket-dev
bucket-staging
Et 1 bucket sur l’environnement de prod.
bucket-prod
Dans un seul fichier de configuration /modules/shared/bucket.tf
|
|
Vous l’avez compris, nous allons utiliser le meta-argument count
.
Grâce à une opération ternaire, nous allons spawn 1 ou 0 bucket-dev
en fonction de l’environnement staging
ou prod
.
Attention, si vous souhaitez utiliser ce bucket_dev
en référence. Il faudra s’y referrer comme un array :
- Si vous êtes dans le même bloc que le meta-argument :
|
|
- Si vous êtes en dehors du bloc, il faudra spécifier l’index :
|
|
Plus d’information sur le meta-argument count
ici :
https://www.terraform.io/docs/language/meta-arguments/count.html