【发布时间】:2021-03-07 09:18:36
【问题描述】:
我有一个使用模块的 Terraform 脚本。我想创建多个资源,所以我使用了 for_each 方法。
下面是我的变量配置:
variable bridge_domains {
description = "Bridge Domain"
type = map
default = {
bd1 = {
name = "BD1",
},
bd2 = {
name = "BD2"
}
}
}
在根 main.tf 文件中,我使用 for_each 循环遍历该变量:
module "schema_template_bd" {
source = "./modules/schema_template_bd"
for_each = var.bridge_domains
schema = module.tenant.mso_schema.id
template = var.template
bd = each.value.name
}
然后在modules/schema_template_bd 文件中我有以下内容:
resource "mso_schema_template_bd" "bd" {
schema_id = var.schema
template_name = var.template
name = var.bd
}
该模块有一个输出,我在其中定义了以下内容:
output "mso_bd" {
value = mso_schema_template_bd.bd[*]
}
这个想法是从所有创建的对象中输出名称。所以我定义了一个output.tf 文件(在根级别),其中包含以下代码:
output "bd_name" {
value = module.schema_template_bd.mso_bd.*.name
}
我总是得到:
此对象没有名为“name”的属性。
通常bd 对象有一个名称,因此在我看来该错误与错误的语法有关。
【问题讨论】:
-
你搞定了吗?