从terraform workspace输出所有资源或特定类型的资源
0.12稍微好一点 我可以这样做:从terraform workspace输出所有资源或特定类型的资源,terraform,Terraform,0.12稍微好一点 我可以这样做: value = aws_security_group.abc 而不仅仅是这个 value = aws_security_group.abc.id 但是,对于具有许多导入的工作区来说,这仍然很乏味。我想将所有状态输出为一个大地图,我可以在其他工作区中导入 我希望至少能够输出给定类型的所有资源,例如: output "sgs" { value = aws_security_group.* } 然后sgs是工作区中所有SG资源的映射最接近于此的方法
value = aws_security_group.abc
而不仅仅是这个
value = aws_security_group.abc.id
但是,对于具有许多导入的工作区来说,这仍然很乏味。我想将所有状态输出为一个大地图,我可以在其他工作区中导入
我希望至少能够输出给定类型的所有资源,例如:
output "sgs" {
value = aws_security_group.*
}
然后sgs是工作区中所有SG资源的映射最接近于此的方法是编写一个输出表达式,引用所有要包含的资源,然后该值的接收者可以将其视为普通映射。例如:
output "security_groups" {
value = {
abc = aws_security_group.abc
def = aws_security_group.def
ghi = aws_security_group.ghi
}
}
创建值的表达式确实需要显式列出所有键,以便显式显示映射中的键以及它们与哪些对象相关。但是Terraform在评估输出时将解析所有这些引用,因此,消费模块将将其视为正常映射值,并可以对元素执行与映射相关的通用操作,例如for
表达式:
module "produces_security_groups" {
# ...
}
locals {
security_group_ids = {
for k, v in module.produces_security_groups.security_groups : k => v.id
}
}
你不能这样做。GitHub上有一些功能请求,但据我所知,这些请求没有得到处理。我将从一个工作区而不是一个模块输出,这会改变什么吗?