Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从terraform workspace输出所有资源或特定类型的资源_Terraform - Fatal编程技术网

从terraform workspace输出所有资源或特定类型的资源

从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资源的映射最接近于此的方法

0.12稍微好一点

我可以这样做:

  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上有一些功能请求,但据我所知,这些请求没有得到处理。我将从一个工作区而不是一个模块输出,这会改变什么吗?