J'ai un script Terraform avec certaines variables renseignées par Consul. Je souhaite utiliser ce script dans deux scénarios différents:
J'ai consulté la documentation de Terraform et constaté que je ne pouvais pas utiliser une variable définie dans Consul comme valeur par défaut pour une autre variable. Donc j'ai fini avec la solution suivante:
## vars.tf
## emulating undefined value using "null" string
variable "my_optional_variable" { default = "null" }
## main.tf
my_optional_variable = "${var.my_optional_variable == "null" ? data.consul_keys.my_optional_variable : var.my_optional_variable}"
Quelqu'un peut-il me montrer un meilleur moyen de le faire? Comment éviter un bidouillage avec une chaîne "nulle"?
Merci
Vous pouvez utiliser un fichier override . Donc, si vous avez vars.tf
contenant:
variable "my_optional_variable" {
default = "null"
}
Et override.tf
qui contient:
variable "my_optional_variable" {
default = "not null"
}
Alors ${var.my_optional_variable}
devrait être égal à not null
. Les fichiers de remplacement sont chargés en dernier et fusionnés dans votre configuration. Plutôt ensuite ajoutés ensemble comme les autres fichiers .tf
du répertoire.
Une autre option est coalesce
qui fonctionne avec des chaînes vides et est donc légèrement supérieure à votre chaîne "null"
.
Étant donné votre scénario ou un cas similaire avec deux variables/sources de données
variable "my_default_value" {
default = "CentOS 7"
}
variable "my_optional_variable" {
default = ""
}
Vous pouvez prendre la "première valeur non vide des arguments donnés. Au moins deux arguments doivent être fournis."
data "openstack_images_image_v2" "bastion_image" {
name = "${coalesce(var.my_optional_variable, var.my_default_value)}"
}