我正试图在https://blog.boltops.com/2020/10/06/terraform-hcl-nested-loops/,并且在第一个for_each之后立即得到错误An argument named "name" is not expected here.
。所以我把它缩小到以下代码:
# Datadog Performance Dashboard
locals {
dashboard_title = "Title here"
hosts = toset( [ "host1", "host2"] )
params = {
"CPU" = [
{
title = "System Load - 1 min avg"
dd_param = "avg:system.load.norm.1"
}
]
"RAM" = [
{
title = "Memory Commit limit"
dd_param = "system.mem.commit_limit"
}
]
}
}
resource "datadog_dashboard" "ordered_dashboard" {
# for_each = local.params
#name = each.key
name = "asdadas"
title = local.dashboard_title
description = "Created using the Datadog provider in Terraform"
layout_type = "ordered"
is_read_only = true
}
由于name = each.key
不起作用(即给出相同的错误An argument named name is not expected here
,可以看到我试图注释掉for_each、each.key赋值和嵌套循环的其余部分,但它仍然在抱怨变量。
也许我需要在使用它之前声明它,这是有道理的,但我发现我前面提到的链接中的代码不能做到这一点https://www.terraform.io/language/resources/syntax也没有https://www.terraform.io/language/expressions/dynamic-blocks,均来自Hashicorps的Terraform文档网站。
这是我正在使用的地形版本:
$ terraform -v
Terraform v1.1.3
on darwin_amd64
+ provider registry.terraform.io/hashicorp/aws v3.73.0
有人想我在这里错过了什么吗?terraform为什么抱怨变量赋值?
在我看来,资源datadog_dashboard
没有名为name
的参数,所以它给出了这样一个错误。
有关更多信息,请仔细查看:https://registry.terraform.io/providers/DataDog/datadog/latest/docs/resources/dashboard