首页 > 解决方案 > 如何将 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
}

标签: terraformterraform-provider-azure

解决方案


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


推荐阅读