如何将Null / Empty值设置为模块中使用的可选字符串变量

时间:2019-01-17 11:47:04

标签: terraform terraform-provider-azure

我正在创建一个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
}

1 个答案:

答案 0 :(得分:0)

从terraform版本0.12开始,存在一个null值。如果在模块输入变量中将其设置为默认值,则会在实例化资源时有效地从资源中省略ip_range_filter