terraform - 如何将 Null/Empty 值设置为模块中使用的可选字符串变量
问题描述
我正在创建一个 terraform 配置(我们称之为配置 A),它用作另一个配置(配置 B)中的模块。在配置 AI 中有一个可选变量,它是一个逗号分隔的字符串(没有空格),包含 IP 地址或 CIDR 形式的 IP 地址范围。如果配置 B 没有输入 IP,我想要跳过或不设置此变量的值。我尝试将“”设置为值,但这当然行不通。还尝试了其他值,但无法弄清楚。
有什么方法可以完成这项工作,或者我必须创建两个配置(我们称之为配置 A.1 和 A.2),其中 A.1 包含字符串变量,而 A.2 不包含。
也许我尝试做的示例代码可以提供帮助。
#Config A
resource "azurerm_cosmosdb_account" "db" {
name = "${var.name_from_module_caller}"
location = "northeuropa"
resource_group_name = "test-cosmos-db-from-terraform"
offer_type = "Standard"
consistency_policy = {
consistency_level = "Session"
}
geo_location = {
location = "northeuropa"
location = "${azurerm_resource_group.rg.location}"
failover_priority = 0
}
ip_range_filter = "${var.whitelis_ip_from_module_caller}" #Need a way to skip this, if var.whitelis_ip_from_module_caller is "". Can't use ""
}
#Config B
module "test-cosmos-db" {
source = "/module/azure_cosmos_module" #This is the Config A
name_from_module_caller = "test-cosmosdb"
# whitelis_ip_from_module_caller //NOT SET, BECAUSE THIS MUST BE OPENED FOR EVERYONE
}
我
解决方案
从 terraform 版本 0.12 开始,有一个空值。如果您将其设置为模块输入变量中的默认值,ip_range_filter
它将在实例化时有效地从资源中省略。
推荐阅读
- firebase - Google 跟踪代码管理器能否在没有 GMS 的设备上运行?
- asp.net-mvc - EF SaveChanges 异常-> DllNotFoundException: SqlServerSpatial110.dll
- react-native - 如果 react-native 应用程序被杀死,则 Amplify PushNotification 没有数据
- r - In R, how will I replace set of values with another set
- logstash - 我可以在以前的 grok 模式的结果的字段上写一个 grok
- javascript - 如何独立模板文件使用 vue 和 vue router cdn?
- oracle - Netsuite 数据集成到 Oracle 分析云?
- reactjs - 使用钩子在 React onClick 中动态渲染组件?
- android - 如何从另一个活动中清除 Webview 缓存
- r - 将不同单位的坐标数据框转换为一个单位