我可以为 terraform 中的资源设置命名空间或层次结构吗?或者以其他方式将资源组合在一起?
Can I have a namespace or hierarchy for resources in terraform? Or otherwise group resources together?
举个具体的例子,我有一组子网,它们都用于同一件事,但分布在多个可用区。
我希望能够将它们全部引用为一个列表,这样我就可以执行类似 aws_subnet.myname[*].id
的操作来获取该组子网的所有子网 ID。
有什么办法可以做到这一点吗?
没有专门的资源分组功能,但您可以使用命名的本地值自行完成:
locals {
subnets = flatten([aws_subnet.a, aws_subnet.b, aws_subnet.c])
}
此处的 flatten
调用是在设置和未设置 count
的资源之间进行规范化,因为没有 count
资源表达式 returns 只是一个对象,而带有 count
它是一个实例序列。
然后在配置的其他地方,如果你需要所有这些 id,你可以写 local.subnets[*].id
.
举个具体的例子,我有一组子网,它们都用于同一件事,但分布在多个可用区。
我希望能够将它们全部引用为一个列表,这样我就可以执行类似 aws_subnet.myname[*].id
的操作来获取该组子网的所有子网 ID。
有什么办法可以做到这一点吗?
没有专门的资源分组功能,但您可以使用命名的本地值自行完成:
locals {
subnets = flatten([aws_subnet.a, aws_subnet.b, aws_subnet.c])
}
此处的 flatten
调用是在设置和未设置 count
的资源之间进行规范化,因为没有 count
资源表达式 returns 只是一个对象,而带有 count
它是一个实例序列。
然后在配置的其他地方,如果你需要所有这些 id,你可以写 local.subnets[*].id
.