首页 > 解决方案 > 如何使用 Consul 中定义的默认值在 Terraform 中定义可选变量

问题描述

我有一个 Terraform 脚本,其中包含从 Consul 填充的一些变量。我想在两种不同的场景中使用这个脚本:

我检查了 Terraform 文档并注意到我不能使用 Consul 中定义的变量作为另一个变量的默认值。所以我最终得到了以下解决方法:

## 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}"

有人可以告诉我一个更好的方法吗?如何避免使用“null”字符串进行破解?

谢谢

标签: terraformconsul

解决方案


另一种选择是coalesce适用于空字符串,因此比您的"null"字符串略好。

给定您的场景或具有两个变量/数据源的类似案例

variable "my_default_value" {
  default = "CentOS 7"
}
variable "my_optional_variable" {
  default = ""
}

您可以从给定的参数中获取“第一个非空值。必须提供至少两个参数”。

data "openstack_images_image_v2" "bastion_image" {
  name = "${coalesce(var.my_optional_variable, var.my_default_value)}"
}

推荐阅读