我正在创建一个terraform配置(我们称为配置A),该配置用作另一个配置(配置B)中的模块。 在配置A中,我有一个可选变量,该变量是一个用逗号分隔的字符串(无空格),包含IP地址或CIDR格式的IP地址范围。 我想要的是跳过或不设置此变量的值,如果没有IP作为配置B的输入。 我尝试将“”设置为值,但是那当然不起作用。还尝试了其他值,但无法弄清楚。
是否有任何方法可以进行这项工作,或者我必须创建两个配置(我们将其称为配置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
}
我
答案 0 :(得分:0)
从terraform版本0.12开始,存在一个null值。如果在模块输入变量中将其设置为默认值,则会在实例化资源时有效地从资源中省略ip_range_filter
。