首页 > 解决方案 > 如何在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 中做到这一点吗?

标签: terraformterraform-provider-azure

解决方案


像这样的构造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
    

推荐阅读