Terraform不尊重git

时间:2017-12-14 19:03:39

标签: git jenkins jenkins-plugins jenkins-pipeline terraform

我的terraform模块位于通过ssh密钥访问的私有bitbucket仓库中。

我不知道git命令terraform运行的内容或如何更改auth,但它似乎使用了不同的ssh配置。

这是我的tf文件:

module "sdfsdfs" {
  source = "git::ssh://bitbucket.org/mycomp/my-module-root//submodule"
}

我在jenkins管道中运行它,我正在编辑ssh配置以使用特定的密钥。我已证明这是有效的:

sshagent (credentials: ['my-ssh-key']) {
    bat 'git clone git@bitbucket.org:mycomp/my-module.git'
}

正确修改ssh配置并在jenkins中使用我的密钥存储区。

我不知道从git repo开始实际运行的是什么,但它不尊重ssh配置:

sshagent (credentials: ['my-ssh-key']) {
    bat 'terraform init'
}

我收到此错误:

C:\Program Files\Git\cmd\git.exe exited with 128: Cloning into 
'.terraform\modules\c760b746e09bd59ba86aae13dc9e9959'...

Permission denied (publickey).

fatal: Could not read from remote repository.

Terraform在这里做什么或没做什么?另外,显然我只想为此会话配置此功能,因此无法为我的jenkins服务器设置全局ssh配置。

2 个答案:

答案 0 :(得分:4)

这部分是一个bitbucket限制,部分是我没有彻底阅读the docs

bitbucket api似乎不支持ssh或其他东西,因为terraform docs只有带有bitbucket的https示例。

像通用git repo一样对待它:

  source = "git::ssh://git@bitbucket.org/mycomp/myrepo.git//my-sub-module"

答案 1 :(得分:0)

我知道这个问题真的很老,但我可能会帮助其他可能遇到这个问题的人。 在 Windows 中帮助我的是将环境变量 GIT_SSH_COMMAND 设置为 ssh.exe 的路径。 在 cmd 中,运行:

setx GIT_SSH_COMMAND C:\\Windows\\System32\\OpenSSH\\ssh.exe