我正在尝试使用我的私人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不支持在模块的源参数中插入,所以如果使用这种方法,您必须对机器用户名和密码进行硬编码。
发布于 2021-03-13 18:44:44
这对我起了作用:
~/.ssh/config文件有如下所示的块:Host USERNAME.github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa .tf文件中:module "name_of_module" {
source = "git@USERNAME.github.com:USERNAME/REPONAME.git//SUBDIR"
...
}发布于 2021-04-03 08:55:53
这对我来说很管用
module "name_of_module" {
source = "git::https://<user>:<pat>@github.com/folder/terraform-azure-core-resource-group.git"
...
}发布于 2021-05-26 21:21:55
需要的东西:
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"注意:如果您将组织秘密配置为可供特定的repos使用,请确保指定具有要导入的Terraform代码的回购。
- 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
注意:在谷歌搜索时,似乎有很多方法可以做这样的事情,但我花了几周的时间尝试各种选择,最终能够做到这一点,我理解了它是如何工作的。*我鼓励反馈意见。
https://stackoverflow.com/questions/61100076
复制相似问题