如何在 terraform 中检查具有两个值的变量字符串

how to check a variable string with two values in terraform

如何在 terraform 中检查具有两个值的变量字符串。

我想用两个字符串值检查变量中的字符串,类似于下面的代码。

virtual_network_type = var.vnet_type == "External" || "Internal" ? var.vnet_type : null

但是 terraform 抛出了下面的错误信息

Error: Invalid operand
│ 
│   on ../../modules/test/test-instance.tf line 51, in resource "azurerm_api_management" "apim_demo":
│   51:  virtual_network_type = var.vnet_type == "External" || "Internal" ? var.vnet_type : null
│ 
│ Unsuitable value for right operand: a bool is required.
╵

我们可以在 terraform 中做到这一点吗?

var.vnet_type == "External" || "Internal" 这样的结构很少有语言会接受,真的。

var.vnet_type == "External" || var.vnet_type == "Internal"

另一方面,它会给你带来更好的结果。


如果您不想重复变量名称,则针对此类用例的另一种解决方案是构建可接受值列表并评估该变量是否包含在列表中。

类似于:

contains(["External", "Internal"], var.vnet_type)

所以,

  • 要么
    virtual_network_type = var.vnet_type == "External" || var.vnet_type ==  "Internal" ? var.vnet_type : null
    
  • virtual_network_type = contains(["External", "Internal"], var.vnet_type) ? var.vnet_type : null