首页 > 解决方案 > 私有 git 存储库中的 Terraform 模块

问题描述

我在私人 gitlab 存储库中创建了一个 terraform 模块。另一个 repo 中的 terraform 资源需要使用此模块。

module "my_module" {
  source = "git::https://gitlab.example.com/my-repo.git"
}

这在本地工作,但不在我们的 CI 管道中,因为它需要用户名和密码。所以我生成了一对并尝试了这个:

module "email_sns" {
  source = "git::https://${var.username}:${var.password}@gitlab.example.com/my-repo.git"
}

这不起作用,因为 terraform 不允许在source.

剩下的唯一选择是,afaik 是使用 git credential helper 并向其中添加用户名和密码。但是store助手将它们存储为纯文本。我不想要这个。我可以看到有一个选项可以cache用作帮助程序,但是如何在 CI 中将用户名和密码存储到其中?或者有没有解决这个问题的替代方法?

标签: gitterraformgitlab-ci

解决方案


您必须为此使用 ssh 密钥。在带有模块的 repo 中创建新密钥terraform,然后将此密钥添加到执行模块的运行器中。您可以在 Gitlab 文档页面上找到更多详细信息如何创建 ssh 密钥

这也意味着,您应该将源字符串从 切换httpsssh以使其正常工作。


推荐阅读