terraform - 如何使用 Consul 中定义的默认值在 Terraform 中定义可选变量
问题描述
我有一个 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”字符串进行破解?
谢谢
解决方案
另一种选择是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)}"
}
推荐阅读
- javascript - 使用服务人员缓存非静态 url
- python - 如何使用 FDB 在 Python 脚本中恢复 Firebird 数据库?
- bots - Discord.js v12 类型错误突击队
- c# - c# discord.net 如何在执行命令时获取输入
- javascript - 制作返回姓名首字母的正则表达式的最佳方法是什么?
- c# - Xamarin Forms - 创建具有复杂数据绑定的自定义条目列 sfdatagrid
- python - 使用索引日期时间从 pandas 数据帧创建 json
- logging - Slack 上的 Datadog 指标监控通知,带有指向日志浏览器的链接
- python-3.x - 试图找出两个日期之间的时间,然后让它们在 python 中可读
- css - 为什么我的反应原生项目中没有应用背景图像