terraform - 如何在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
推荐阅读
- mongodb - Mongo 如何写一个 CASE WHEN THEN ELSE
- python - 如何在迭代和附加到列表时解决 ValueError
- html - 调整字体大小以适合 html 元素
- angular - 使用“发生未处理的异常:NGCC 失败”编译 Angular 项目
- dependency-injection - 在 Blazor WebAssembly 中使用依赖注入
- scala - scala中的函数柯里化
- javascript - 从不同的 api 响应添加对象数组
- here-api - PROXIMITY 参数描述了什么(事件 API)
- c# - 我可以只公开某些 C# 类吗?
- java - 在 Android Studio 中使用 OpenCV 和 Tensorflow 进行实时情绪检测