git - 私有 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 中将用户名和密码存储到其中?或者有没有解决这个问题的替代方法?
解决方案
您必须为此使用 ssh 密钥。在带有模块的 repo 中创建新密钥terraform
,然后将此密钥添加到执行模块的运行器中。您可以在 Gitlab 文档页面上找到更多详细信息如何创建 ssh 密钥
这也意味着,您应该将源字符串从 切换https
到ssh
以使其正常工作。
推荐阅读
- c# - 如何修复验证以更好?
- spring-boot - 通过 RestTemplate 查询 Spring Data Rest
- android - Libgdx 项目生成
- angular - 类型 googlemaps index.d.ts 不是模块错误消息
- pandas - pandas:用一个可以指示它曾经为空的值填充na
- android - 我可以从一个接口端口转发到另一个接口端口吗?
- qt - QT Designer 样式表边框属性
- blockchain - 使用移动应用程序的最终用户使用 HSM 设备进行身份验证有哪些不同的方式?
- java - 我如何正确创建类比率添加(比率 r)?
- r - 如何从两列数据框中绘制两条线并使用 ggplot 包缩放 y 轴