首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >github私有回购中的Terraform模块

github私有回购中的Terraform模块
EN

Stack Overflow用户
提问于 2020-04-08 11:55:26
回答 7查看 15.3K关注 0票数 15

我正在尝试使用我的私人git作为terraform模块的源代码。

ssh公钥已复制到github。

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

任何帮助都是非常感谢的。

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

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

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

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

如果您需要像CI工作人员一样在远程计算机上运行Terraform,您需要将SSH键写入磁盘,并在工作人员的配置过程中适当地设置GIT_SSH_COMMAND环境变量,或者创建一个对所述repos具有读取访问权限的GitHub机器用户,并将其凭据嵌入到模块的源参数中:模块“private”{ source = },注意到Terraform不支持在模块的源参数中插入,所以如果使用这种方法,您必须对机器用户名和密码进行硬编码。

EN

回答 7

Stack Overflow用户

发布于 2021-03-13 18:44:44

这对我起了作用:

  1. 设置ssh键;确保~/.ssh/config文件有如下所示的块:
代码语言:javascript
复制
Host USERNAME.github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa 
  1. 将其添加到.tf文件中:
代码语言:javascript
复制
module "name_of_module" {
  source = "git@USERNAME.github.com:USERNAME/REPONAME.git//SUBDIR"
  ...
}
票数 7
EN

Stack Overflow用户

发布于 2021-04-03 08:55:53

这对我来说很管用

代码语言:javascript
复制
module "name_of_module" {
  source = "git::https://<user>:<pat>@github.com/folder/terraform-azure-core-resource-group.git"
  ...
}
票数 5
EN

Stack Overflow用户

发布于 2021-05-26 21:21:55

需要的东西:

  • GitHub计算机帐户(注:这与常规的GitHub帐户功能上没有太大区别;根据预期的使用,它被称为“机器”)。见机器用户
  • 一把ssh钥匙。注:我使用RSA。关于如何生成一个的示例:
代码语言:javascript
复制
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

注意:如果您将组织秘密配置为可供特定的repos使用,请确保指定具有要导入的Terraform代码的回购。

  • 然后,在您的GitHub Action文件中,添加将私有ssh键添加到运行者ssh代理中的代码,以便能够克隆私有GitHub回购中的Terraform模块。示例:
代码语言:javascript
复制
      - name: Terraform Init
        id: init
        run: terraform init
        env:
          GIT_SSH_COMMAND: "echo '${{ secrets.ORG_PRIVATE_SSH_KEY }}' > id_rsa
          && ssh-keyscan github.com > known_hosts
          && chmod 600 id_rsa known_hosts
          && ssh -i ./id_rsa -o UserKnownHostsFile=./known_hosts"

      - name: Terraform Plan
        id: plan
        if: github.event_name == 'pull_request'
        run: terraform plan -no-color
        continue-on-error: true
        env:
          GIT_SSH_COMMAND: "echo '${{ secrets.ORG_PRIVATE_SSH_KEY }}' > id_rsa
          && ssh-keyscan github.com > known_hosts
          && chmod 600 id_rsa known_hosts
          && ssh -i ./id_rsa -o UserKnownHostsFile=./known_hosts"

参考/贷方:https://github.com/hashicorp/setup-terraform/issues/33

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61100076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档