github中的Jenkinsfile和terraform模块:如何通过密钥进行身份验证?
Posted
技术标签:
【中文标题】github中的Jenkinsfile和terraform模块:如何通过密钥进行身份验证?【英文标题】:Jenkinsfile and terraform modules in github: how to authenticate by key? 【发布时间】:2020-11-16 19:47:13 【问题描述】:我有:
带有 Terraform12 代码的主 github 存储库 二级仓库中的模块,称为source = "git@github.com:user/mod_repo?ref=v1.0.0"
Jenkins 2.249(现在无法更新)
Jenkins 中用于访问mod_repo
的私有 ssh 密钥
当我尝试在 Jenkins 管道中运行 terraform init
时,我得到了
Could not download module "vpc" (main.tf:1) source code from
"git@github.com:user/mod_repo?ref=v1.0.0": error downloading
'ssh://git@github.com/user/mod_repo?ref=v1.0.0': /usr/bin/git exited
with 128: Cloning into '.terraform/modules/vpc'...
Permission denied (publickey).
在本地我可以毫无问题地做到这一点。
我应该如何配置Jenkinsfile
* 中的密钥(或其他地方?)以允许访问辅助存储库?
我见过this、this、this 和this,但不知道如何将它们连接在一起。
【问题讨论】:
【参考方案1】:您需要使用 sshagent 并将您的密钥传递给它,像这样
sshagent (credentials: ['my-build-ssh-key'])
sh 'terraform init'
withAWS(credentials: 'aws-build')
sh 'terraform apply -lock=false -auto-approve'
应首先将密钥添加到 Jenkins 的凭据部分,然后名称将代替 my-build-ssh-key
。
这意味着当您运行 terraform init 时,它可以在拉入模块时使用该密钥。
在该示例中,它还使用存储在 Jenkins 中的凭据以及此插件 (https://www.jenkins.io/doc/pipeline/steps/pipeline-aws/) 与 AWS 通信并启动您的堆栈。
【讨论】:
以上是关于github中的Jenkinsfile和terraform模块:如何通过密钥进行身份验证?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Intellij Idea 在 Java 项目中突出显示 Jenkinsfile 语法