Terraform 0.12语法,用于将本地映射转换为列表输出
我有一个地形模块,上面有一张这样的本地地图Terraform 0.12语法,用于将本地映射转换为列表输出,terraform,Terraform,我有一个地形模块,上面有一张这样的本地地图 locals { prod_cidrs = { xxx = "XX.XX.XX.XX/DV" yyy = "YY.YY.YY.YY/DV" zzz = "ZZ.ZZ.ZZ.ZZ/DV" } dev_cidrs = { xxx = "XX.XX.XX.XX/PD" yyy = "YY.YY.YY.YY/PD" zzz = "ZZ.ZZ.ZZ.ZZ/PD" } } …提供一些输出,如 out
locals {
prod_cidrs = {
xxx = "XX.XX.XX.XX/DV"
yyy = "YY.YY.YY.YY/DV"
zzz = "ZZ.ZZ.ZZ.ZZ/DV"
}
dev_cidrs = {
xxx = "XX.XX.XX.XX/PD"
yyy = "YY.YY.YY.YY/PD"
zzz = "ZZ.ZZ.ZZ.ZZ/PD"
}
}
…提供一些输出,如
output "prod_cidrs" {
value = local.prod_cidrs
}
output "dev_cidrs" {
value = local.dev_cidrs
}
因此,消费者可以在其余组合中获取module.my_module.dev_cidrs.xxx或XX.XX.XX.XX/DV或module.my_module.prod_cidrs.YY或YY.YY.YY/PD
现在,我想提供一个额外的输出,让我的消费者能够一次获取所有产品或开发CIDR作为列表,因此结果将是,例如,对于产品CIDR:
[XX.XX.XX.XX/PD,YY.YY.YY/PD,ZZ.ZZ.ZZ/PD]
如何在不修改我的当前局部变量的情况下实现这一点?如果直接查看module.my_module.dev_cidrs输出,您将看到它是一个映射,允许您选择module.my_module.dev_cidrs.xxx使用xxx键并返回其值
如果您想要产品CIDR的值列表,则可以使用
模块的调用者可以自己这样做:
module "foo" {
source = "./module"
}
output "dev_x" {
value = module.foo.dev_cidrs.xxx
}
output "all_prod_map" {
value = module.foo.prod_cidrs
}
output "all_prod_list" {
value = values(module.foo.prod_cidrs)
}
或者,您可以向模块中添加额外的输出:
locals {
prod_cidrs = {
xxx = "XX.XX.XX.XX/DV"
yyy = "YY.YY.YY.YY/DV"
zzz = "ZZ.ZZ.ZZ.ZZ/DV"
}
dev_cidrs = {
xxx = "XX.XX.XX.XX/PD"
yyy = "YY.YY.YY.YY/PD"
zzz = "ZZ.ZZ.ZZ.ZZ/PD"
}
}
output "prod_cidrs" {
value = local.prod_cidrs
}
output "dev_cidrs" {
value = local.dev_cidrs
}
output "all_prod_cidrs" {
value = values(local.prod_cidrs)
}
然后他们可以将其用作module.foo.all_prod_cidrs。如果您直接查看module.my_module.dev_cidrs输出,您将看到它是一个映射,允许您选择module.my_module.dev_cidrs.xxx使用xxx键并返回其值
如果您想要产品CIDR的值列表,则可以使用
模块的调用者可以自己这样做:
module "foo" {
source = "./module"
}
output "dev_x" {
value = module.foo.dev_cidrs.xxx
}
output "all_prod_map" {
value = module.foo.prod_cidrs
}
output "all_prod_list" {
value = values(module.foo.prod_cidrs)
}
或者,您可以向模块中添加额外的输出:
locals {
prod_cidrs = {
xxx = "XX.XX.XX.XX/DV"
yyy = "YY.YY.YY.YY/DV"
zzz = "ZZ.ZZ.ZZ.ZZ/DV"
}
dev_cidrs = {
xxx = "XX.XX.XX.XX/PD"
yyy = "YY.YY.YY.YY/PD"
zzz = "ZZ.ZZ.ZZ.ZZ/PD"
}
}
output "prod_cidrs" {
value = local.prod_cidrs
}
output "dev_cidrs" {
value = local.dev_cidrs
}
output "all_prod_cidrs" {
value = values(local.prod_cidrs)
}
然后他们可以将其用作module.foo.all\u prod\u cidrs