Terraform 如何将空/空值设置为模块中使用的可选字符串变量
我正在创建一个terraform配置(我们称之为配置a),它在另一个配置(配置B)中用作模块。 在配置A中,我有一个可选变量,它是逗号分隔的字符串(没有空格),包含CIDR形式的IP地址或IP地址范围。 我想要的是,如果配置B中没有IP作为输入,则跳过或不设置此变量的值。 我尝试将“”设置为值,但这当然不起作用。还尝试了其他值,但无法找到它 有没有办法让这项工作,或者我必须创建两个配置(我们称之为配置A.1和A.2),其中A.1包含字符串变量,A.2不包含 也许我试着做的一个示例代码能有所帮助Terraform 如何将空/空值设置为模块中使用的可选字符串变量,terraform,terraform-provider-azure,Terraform,Terraform Provider Azure,我正在创建一个terraform配置(我们称之为配置a),它在另一个配置(配置B)中用作模块。 在配置A中,我有一个可选变量,它是逗号分隔的字符串(没有空格),包含CIDR形式的IP地址或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
}
I自terraform版本0.12起,有一个值。如果将此设置为模块输入变量中的默认值,则在实例化资源时,它将有效地忽略资源中的
ip\u range\u filter
。如果将其设置为”
,会出现什么错误?我得到的有关它的信息必须包含具有有效ip地址的字符串。在Git Hub for azurerm_cosmosdb_帐户资源上将此作为问题打开,现在有一个请求允许“”作为有效值。我想我只能等到这个补丁的新版本发布了。