如何在Terraform中使用flatten生成目标映射?
解决方案
你需要把flatten生成的对象列表合并为单一映射,结合merge函数与扩展运算符...就能实现目标结构,同时还可以剔除不需要的environments字段,代码如下:
application_envs = merge([ for app_key, app in var.applications : { for env in app.environments : "${app_key}-${env}" => omit(app, "environments") } ]...)
代码说明:
- 内层
for循环遍历每个应用的环境列表,生成以应用名-环境名为键、剔除environments后的应用配置为值的小型映射。 - 外层
for循环会得到一个包含多个小型映射的列表,通过...将列表展开为merge的参数,merge会把所有小型映射合并成一个完整的目标映射结构。
如果需要保留environments字段,只需把omit(app, "environments")替换为app即可。
内容的提问来源于stack exchange,提问作者Vitor Falcão
相关产品推荐
相关产品推荐

