我的问题
这是一个 Terraform 脚本:
provider "azurerm" {
skip_provider_registration = true
features {
}
}
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "=3.74.0"
}
}
}
variable "configurations" {
type = map(string)
default = {
audit_log_enabled = "ON"
}
validation {
condition = contains(keys(var.configurations), "foo") || contains(keys(var.configurations), "bar")
error_message = "'foo' or 'bar' are not taken into account."
}
}
运行时,例如我启动 terraform console,我收到以下消息:
│ 错误:变量值无效 │ │ test.tf 第 17 行: │ 17: 变量“配置”{ │ ├──────────────── │ │ var.configurations 是具有 1 个元素的字符串映射 │ │ 'foo' 或 'bar' 不被考虑在内 帐户。 │ │ 这是通过验证规则检查的 测试.tf:28,3-13.
期待什么
由于我没有使用 foo ,所以我不应该收到此消息。
但是如果我默认:
default = {
audit_log_enabled = "ON"
foo = "123"
}
我没有消息。
我需要什么
谢谢你
我认为您正在寻找的正确验证表达式如下:
variable "configurations" {
type = map(string)
default = {
audit_log_enabled = "ON"
}
validation {
condition = !contains(keys(var.configurations), "foo") && !contains(keys(var.configurations), "bar")
error_message = "'foo' or 'bar' are not taken into account."
}
}