我有一个使用模块的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
对象通常都有一个名称,因此这个错误可能与我的代码语法有关。