我有一个 Terraform 脚本,其中包含一些从 Consul 填充的变量。我想在两种不同的场景中使用这个脚本:
- 场景 1. 使用 Consul 的默认值一切正常。
- 场景 2. 我需要覆盖一些变量。
我检查了 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”字符串进行黑客攻击?
Thanks
另一种选择是coalesce https://www.terraform.io/docs/configuration/interpolation.html#coalesce-string1-string2-它适用于空字符串,所以比你的稍好一些"null"
string.
给定您的场景或具有两个变量/数据源的类似案例
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)}"
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)