我的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配置。
答案 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