问题标签 [terraform-provider-gitlab]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1088 浏览

terraform - 如何将 API 令牌作为 Terraform 秘密资源提供给 GitLab Terraform 提供者?

我正在尝试使用 Terraform 来管理一些 GitLab(自托管)配置。Terraform GitLab 提供程序需要 GitLab 个人访问令牌才能进行 API 调用以读取和写入配置。当我尝试使用 Terraform 提供此令牌时,secret_resourceTerraform 无法让我管理机密。当我尝试导入密钥时,Terraform 失败:

这是重现此行为的最小 Terraform:

我省略了真实的主机名和 GitLab 令牌值。通过使用此配置初始化一个新的 Terraform 根模块,然后尝试导入密钥,我可以可靠地重现此故障。

这似乎是一个不合理的失败——secret_resource不依赖于 GitLab 提供者。如果 Terraform 允许导入该值,那么它将可用,然后 GitLab 提供程序将被正确配置。

我观察到这种行为:

  • Terraform v0.13.6
    • 提供者registry.terraform.io/nixpkgs/gitlab v3.4.999(git rev 68c8c0e4cf14fda698bcacb74cb01fcfe7128815)
    • 提供者 registry.terraform.io/nixpkgs/secret v1.1.1

我希望能够继续使用secret_resource来管理 GitLab API 令牌。我怎样才能?

0 投票
1 回答
49 浏览

gitlab - 取决于列表中的另一个元素

我正在尝试从头开始创建 Gitlab 组的层次结构。由于它可能会自行扩展,因此我不想为每个组创建单独的资源,因此我尝试创建一个自定义模块并通过使用 for_each 从列表中创建组:

在所有组都没有父组之前,这很有效。问题是如果提供了父组,它将在创建父组之前读取父组的数据。

模块中的相关代码片段:

terraform apply命令记录:

depends_on除了为每个组创建单独的资源并手动设置之外,还有什么方法可以强制依赖列表中的另一个元素?

如果有必要,我正在使用以下版本:

任何帮助表示赞赏!

编辑:最初的想法是创建一个动态组层次结构,我们不必手动将子组重新连接到新的中间父级。 示例图像

如果我想在 Subgroup2 及其子组之间引入一个新组,我将不得不手动设置彼此之间的依赖关系,虽然这对少数组来说不是问题,但如果足够大,这可能是一个真正的问题组数。

0 投票
1 回答
187 浏览

terraform - Terraform - 用于不同属性编号的嵌套循环

描述

我有以下输入结构 (*.tfvars.json)

解析为以下 tf 变量:

项目的数量以及每个项目中的变量数量可能会有所不同,因此定义为列表。

首先,我使用简单的“计数”元参数创建项目(gitlab 提供程序):

但后来我正在努力创建项目的变量。

问题

使用 "count" 不起作用,因为它不支持嵌套;
所以我发现的另一种方法是使用 for-each 循环。
我已经展平了地图:

但它仍然没有给我任何东西,因为我没有看到使用唯一属性(如名称)检索创建的项目 ID 的选项,并且项目 ID 是创建变量资源所必需的:

这似乎是一个相当简单的要求(只是一个使用第一个循环迭代器作为索引来检索项目 ID 的嵌套循环),但我找到的解决方案要么不涵盖这种特殊情况(具有未定义/可变数量的循环中的参数),或者过于复杂......

你们能分享一下如何用 terraform-newbie 解决这样的问题吗?

0 投票
1 回答
157 浏览

terraform - Terraform - 在循环中的模块之间创建和传递文件

我的 TF 脚本正在创建 k8s 资源并基于template_file.
然后我想将其传递给另一个模块(使用 GitLab 提供程序 - 将它们保存为 GitLab 变量)。

到目前为止,我只创建了一个 kubconfig,而且方法非常简单:

然后传递给 GitLab 模块:

并用作:

但是如何为多个文件实现相同的效果?

我看到这count也适用于数据,所以我可以定义:

但随后output不支持count,并且我的“花式”强制循环解决方法似乎不起作用:

你知道如何处理这样一个话题吗?