terraform - Terraform 'for in' 以展平嵌套地图结构
问题描述
我有一些用于以嵌套方式管理我们的 gitlab 子组的 terraform 代码。我得到的输出如下所示,在当地人中,并且想将其展平。所有键名都是唯一的,并且在每个 sub_group 级别可能有 1 个或多个映射。
基本上我有这样的东西:
locals {
groups = {
group1 = {
id = 1
sub_group_1 = {
group2 = {
id = 2
}
group3 = {
id = 3
sub_group_2 = {
group4 = {
id = 4
sub_group_3 = {
group5 = {
id = 5
sub_group_4 = {
group6 = {
id = 6
sub_group_5 = {
group7 = {
id = 7
}
}
}
}
}
}
}
}
}
}
}
}
}
for in
嵌套时,我仍在努力获取该方法。这是我到目前为止所拥有的,但它不起作用。
output "Test" {
value = {
for k1, v1 in local.test.groups : {
for k2, v2 in v1.sub_group_1 : {
for k3, v3 in v2.sub_group_2 : {
for k4, v4 in v3.sub_group_3 : {
for k5, v5 in v4.sub_group_4 : {
for k6, v6 in v5.sub_group_5 : {
k6 => v6.id
}
}
}
}
}
}
}
}
我想让它看起来像这样:
groups = {
group1 = 1
group2 = 2
group3 = 3
group4 = 4
group5 = 5
group6 = 6
group7 = 7
}
然后我可以很容易地添加 gitlab 项目并让用户传入 group_name,我可以提取 gitlab_project 资源所需的 ID。
目前,我们有两个步骤来创建组,然后用户从 gitlab 站点手动获取 ID 并使用组 ID 配置项目。
这是我得到的错误:
Error: Missing key/value separator
on main.tf line 63, in output "Test":
62: for k6, v6 in v5["sub_group_5"] : {
63: k6 => v6
Expected an equals sign ("=") to mark the beginning of the attribute value.
解决方案
推荐阅读
- python - 解析 XML 时出错:列表索引必须是整数或切片,而不是 Str
- powershell - 当显示名称中有特殊字符时,获取通讯组中所有显示名称的 SMTP 地址
- json - 如何正确解析和输入 graphql 结果?
- puppet - 使用 puppet 迭代一定次数
- three.js - 三个 JS 中的动画透明度
- javascript - 遍历 CSV 文件并为每一行运行等待?
- rest - 使用 Vertx 实现客户端分页 API 调用的最佳方式是什么?
- sql - 在 SQL Server 中以十六进制存储数据的充分理由是什么?
- sqlite3-ruby - Ruby 新手,sqlite3 问题。我已经尝试了一切,但我仍然卡住了
- database - 章节跟踪应用程序的良好数据库设计