【问题标题】:Referencing a module in a peer repository on a locally hosted gitlab在本地托管的 gitlab 上引用对等存储库中的模块
【发布时间】:2023-03-07 07:47:02
【问题描述】:

我有一个本地托管的 gitlab 实例,有两个存储库在同一个组中。

AWS:
-   /Modules
-   /VPC

在 vpc 存储库中,我指的是存在于 Modules 存储库中的模块

module "custom-vpc" {
  source      = "git::https://local.gitlab.mydomain.com/aws/modules.git//vpc"
…

但是,在CI 中,这会导致在init 阶段出现以下错误:

fatal: unable to access
│ 'https://local.gitlab.mydomain.com/aws/modules.git/': SSL
│ certificate problem: unable to get local issuer certificate

由于两个 repos 都属于同一个组并在本地托管,有没有一种方法可以在不使用 https 路由的情况下引用模块?或者还有什么其他的解决方案?

【问题讨论】:

  • 也许使用 git+ssh 而不是 http(s)?您可以根据需要将deploy keys 用于项目范围的 SSH 密钥。这有助于解决您的问题吗?虽然我认为您也可以解决 SSL 问题并使用 https。
  • @sytech 我试过了,阻止我的是 deploy_keys 可用作 CI 环境变量,但是将它们插入到 terraform 代码中似乎不起作用。

标签: gitlab terraform gitlab-ci


【解决方案1】:

如果您想避免使用 HTTPS,您基本上有两种选择:

  1. 使用 SSH(您可以将其与 sytech 在 cmets 中提到的部署密钥一起使用),或者
  2. 使用 git 子模块,并在本地引用您的模块文件。

如果您选择使用第二个选项,只需将您的第一个 git 存储库作为子模块嵌入到第二个存储库中,并确保您的 CI/CD 设置设置为获取您的子模块。设置完成后,将模块路径视为本地文件,您应该可以不用 HTTPS。

所有这些都设置好了,如果你打算长期使用这个设置,你真的应该设置 HTTPS。处理这个问题的正确方法是使用GitLab terraform module repository,它仍然需要HTTPS。您可以使用 Let encrypt 获得免费证书,而且购买域进行验证非常便宜。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多