github 私人仓库中的 Terraform 模块

hpm*_*pmi 23 git github terraform

我正在尝试使用我的私人 git 存储库作为 terraform 模块的源。

ssh 公钥已复制到 github。

尝试了以下选项作为源,但没有任何效果:

任何帮助是极大的赞赏。

参考以下链接上的 Private Github repos 部分也没有帮助。 https://github.com/alibaba/terraform-provider/blob/master/vendor/github.com/hashicorp/terraform/website/docs/modules/sources.html.markdown

私有 GitHub 存储库 如果您需要 Terraform 从私有 GitHub 存储库获取模块,则必须向 Terraform 提供凭据,以作为对这些存储库具有读取访问权限的用户进行身份验证。

如果您仅在本地计算机上运行 Terraform,则可以将模块源指定为 SSH URI(如 git@github.com:hashicorp/example.git),Terraform 将使用您的默认 SSH 密钥进行身份验证。

如果您使用 Terraform Enterprise,则可以使用 SSH URI。您需要向您的组织添加 SSH 私钥,并将其分配给从私有存储库获取模块的任何工作区。请参阅有关克隆模块的 SSH 密钥的 Terraform Enterprise 文档。

如果您需要在 CI Worker 等远程计算机上运行 Terraform,则需要将 SSH 密钥写入磁盘并在 Worker 的配置过程中适当设置 GIT_SSH_COMMAND 环境变量,或者创建一个对存储库具有读取权限的 GitHub 计算机用户有问题并将其凭据嵌入到模块的源参数中: module "private-infra" { source = "git:: https://MACHINE-USER:MACHINE-PASS@github.com/org/privatemodules//modules/foo " } 请注意,Terraform 不支持在模块的源参数中进行插值,因此如果使用此方法,您必须对计算机用户名和密码进行硬编码。

Mag*_*nus 9

这对我有用:

  1. 设置你的 ssh 密钥;确保您的~/.ssh/config文件有这样的块:
Host USERNAME.github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa 
Run Code Online (Sandbox Code Playgroud)
  1. 将其添加到您的.tf文件中:
module "name_of_module" {
  source = "git@USERNAME.github.com:USERNAME/REPONAME.git//SUBDIR"
  ...
}
Run Code Online (Sandbox Code Playgroud)


小智 6

需要的东西:

  • GitHub 机器帐户(注意:这在功能上与常规 GitHub 帐户没有太大区别;根据预期用途将其称为“机器”)。看机器用户
  • 一个 ssh 密钥。注意:我使用的是RSA。有关如何生成的示例:
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Run Code Online (Sandbox Code Playgroud)

注意:如果您将组织机密配置为可用于特定存储库,请务必指定具有您尝试导入的 Terraform 代码的存储库。

  • 然后,在 GitHub Action yaml 文件中,添加将私有ssh 密钥添加到运行程序的 ssh 代理的代码,以便能够克隆私有 GitHub 存储库中的 Terraform 模块。例子:
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Run Code Online (Sandbox Code Playgroud)

参考/信用: https: //github.com/hashicorp/setup-terraform/issues/33

注意:在谷歌搜索时,似乎有很多方法可以做这样的事情,但我花了几个星期的时间尝试各种选项,最终能够用这个来做到这一点,并且我理解了它是如何工作的。:) 我鼓励反馈。


hpm*_*pmi 5

这对我有用

module "name_of_module" {
  source = "git::https://<user>:<pat>@github.com/folder/terraform-azure-core-resource-group.git"
  ...
}

Run Code Online (Sandbox Code Playgroud)

  • 这会将您的代码放入您的代码中。任何有权访问 terraform 代码的人都可以访问正在调用的 terraform 模块 (2认同)

aiq*_*ncy 2

在位桶上测试。github上应该是一样的:

source = "git::https://@bitbucket.com/mycompany/my-project.git"
Run Code Online (Sandbox Code Playgroud)