使用用作模块源的 bitbucket 存储库处理 ssh/https 身份验证



我正在尝试使用一个Terraform模块,该模块位于BitBucket的专用私有模块存储库中。我在 BitBucket 中有一个应用程序存储库,其中包含 Terraform 模板,该模板使用模块存储库中的模块。当我签入对应用程序存储库的更改时,它会触发 BitBucket 管道。

当 BitBucket 管道在我的应用程序存储库上运行时,其中的 Terraform 模板将我的模块存储库作为模板使用的模块的源。管道运行terraform init失败,因为管道需要输入模块源存储库的密码。我见过人们使用 git 凭据助手来存储凭据,但这似乎是缓存以前输入的凭据的解决方案。在此解决方案中并非如此,因为这是一个 Docker 映像,以前不会在其上缓存我的 git 凭据。

我也花了很多时间试图让 ssh 使用它。我已经在我的应用程序存储库上生成了公钥/私有 ssh 密钥,给定我的模块存储库的公钥,然后将模块源设置为我的 ssh git 路径。不过,Terraform无法找出存储库路径,告诉我它不是一个有效的存储库。

下载模块时出错: 加载模块时出错: 下载 'ssh://git@bitbucket.org:foo/bar.git' 时出错: C:\Program Files\Git\cmd\git.exe 以 128 退出: 克隆到 '.terraform\modules\f169a1ea8d4eb404'... ssh:无法解析主机名 bitbucket.org:foo:名称或服务未知 致命:无法从远程存储库读取。

请确保您拥有正确的访问权限 并且存储库存在。

使用 ssh 时,我尝试将源设置为git::ssh://git@bitbucket.org:foo/bar.gitgit::git@bitbucket.org:foo/bar.git。 每次我被告知这不是一个有效的存储库时,主机名是未知的,并且无法授权。我还在 Windows 上的$HOME/.ssh路径下将bitbucket.org添加到我的 Windowsknown_hosts文件中。我不确定SSH密钥是否正确使用,或者Terraform无法找出BitBucket存储库路径。

我更愿意通过HTTPS/缓存凭据进行SSH路由,但是即使我在Windows计算机上本地运行"terraform init",我也无法使其正常工作。所以我想从那里开始,我必须在Windows上做什么才能让Terraform使用带有SSH作为模块源的BitBucket存储库?

我不确定SSH密钥是否正确使用,或者Terraform是否无法找出BitBucket存储库路径

将环境变量GIT_SSH_COMMAND设置为 ssh -v 后,尝试再次启动所有进程:这将显示用于 ssh 会话的密钥。
注意:ssh://git@bitbucket.org:foo/bar.git是错误的:它应该是ssh://git@bitbucket.org/foo/bar.git

最新更新