【发布时间】:2020-09-06 20:21:31
【问题描述】:
假设我有一张环境地图要提供给 for_each
environments = {
"0" = "dev"
"1" = "test"
"2" = "stage"
}
然后无论出于何种原因,我都想为每个环境创建一个 Azure 资源组。
resource "azurerm_resource_group" "resource_group" {
for_each = var.environments
name = "${var.resource-group-name}-${each.value}-rg"
location = var.location
}
如何获得输出?我已经尝试了新的 splat 无济于事。
output "name" {
value = "${azurerm_resource_group.resource_group[*].name}"
}
output "id" {
value = "${azurerm_resource_group.resource_group[*].id}"
}
output "location" {
value = "${azurerm_resource_group.resource_group[*].location}"
}
错误:不支持的属性
in output "id":
6: value = "${azurerm_resource_group.resource_group[*].id}"
This object does not have an attribute named "id".
如何输出使用 for_each 创建的资源的多个实例的属性?
【问题讨论】:
-
如果您实际上不使用键,为什么这是一个地图,而不仅仅是一个列表/集合?
-
鉴于提供的配置,
environments可以是 List 而不是 Map 类型,并且位置输出可以是value = var.location。除此之外,azurerm_resource_group.resource_group对象将不支持您自己发现的 splat 运算符。那是版本 -
我必须使用地图,因为这是 for_each 需要的。我基本上只是想像您使用 count 和 splat 一样获取每个元素的输出。
标签: terraform terraform-provider-azure terraform0.12+