terraform init失败-git必须可用并且在PATH上

时间:2019-01-28 16:12:15

标签: git terraform

运行terraform init / get时遇到问题。

我遇到的错误:

Error downloading modules: Error loading modules: error downloading 'ssh://git@github.com/etc etc': git must be available and on the PATH

github路径是正确的,可以在另一台机器上正常工作。

Git正常工作,它也在PATH中。 TF_LOG为空。 在ubuntu上工作。

谢谢!

3 个答案:

答案 0 :(得分:4)

我不知道您是否解决了您的问题,但我遇到了同样的问题然后解决了。分享答案,以防其他人需要帮助。

作为参考,我遇到了这个问题

  • Ubuntu 18.04
  • Linux Ubuntu 4.15.0-45-通用
  • 通过Snap安装的Terraform v0.11.11 Rev 216

错误来自文件terraform/vendor/github.com/hashicorp/go-getter/get_git.goGet函数。该函数首先尝试的是以下调用

if _, err := exec.LookPath("git"); err != nil {
   return fmt.Errorf("git must be available and on the PATH")
}

这将导致在路径中列出的所有文件夹中搜索具有所提供名称(在本例中为git)的文件。我创建并执行了一个执行相同调用的go脚本,它的行为符合预期,找到git时没有错误。

此后,我从snap卸载了terraform并直接从Hashicorp网站下载了可执行文件。当我运行仍为v0.11.11的可执行文件版本时,它没有任何问题。这使我相信该错误与snap如何运行可执行文件或快照安装的应用程序周围的权限模型有关。

TL; DR: 卸载Terraform的快速安装版本,然后下载并使用Hashicorp二进制文件。

答案 1 :(得分:0)

根据terraform documentation

对于github.com项目,要通过SSH克隆,请使用
   格式如下:

module "consul" {
  source = "git@github.com:hashicorp/example.git"
}

对于任意Git存储库,请使用特殊的git ::前缀

module "storage" {
  source = "git::ssh://username@example.com/storage.git"
}

此外,请验证Config ~/.ssh/config对于您的github帐户是否正确:

希望这会有所帮助。

答案 2 :(得分:-1)

卸载 Terraform snap 安装版本,然后下载并使用Hashicorp二进制文件。