Terraform 安装后找不到 provisioner 命令

44次阅读
没有评论

问题描述

在使用 Terraform 时遇到了一个问题,他安装了 Terraform,并使用 Ansible 安装了 Go。但是在 Terraform 中使用 provisioner 命令时,出现了找不到 go 命令的错误。然而,如果他手动通过 SSH 连接到服务器,然后执行相同的命令,就能正常工作。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

这个问题可能是由于 bashrc 没有重新加载导致的。你可以尝试重新加载 bashrc 文件,然后再次运行 Terraform。
以下是在 Linux 系统上重新加载 bashrc 文件的步骤:
1. 打开终端。
2. 运行以下命令重新加载 bashrc 文件:

source ~/.bashrc
  1. 然后再次运行 Terraform,看看问题是否解决了。

方案2

如果重新加载 bashrc 文件没有解决问题,你可以尝试在 provisioner 中指定完整的 go 命令路径。
以下是在 Terraform provisioner 中指定完整的 go 命令路径的步骤:
1. 打开 Terraform 配置文件。
2. 找到 provisioner 部分的代码块。
3. 修改 provisioner 代码块中的 go 命令为完整的路径,例如:

provisioner "remote-exec" {
  inline = [
    "cd path/to/project",
    "/usr/local/go/bin/go mod tidy"
  ]
}
  1. 保存并关闭文件。
  2. 再次运行 Terraform,看看问题是否解决了。

方案3

如果以上两种方案都没有解决问题,你可以尝试在 provisioner 中添加环境变量,以确保 go 命令能够正确执行。
以下是在 Terraform provisioner 中添加环境变量的步骤:
1. 打开 Terraform 配置文件。
2. 找到 provisioner 部分的代码块。
3. 在 provisioner 代码块中添加环境变量,例如:

provisioner "remote-exec" {
  inline = [
    "cd path/to/project",
    "export PATH=$PATH:/usr/local/go/bin",
    "go mod tidy"
  ]
}
  1. 保存并关闭文件。
  2. 再次运行 Terraform,看看问题是否解决了。

方案4

如果以上方案都没有解决问题,你可以尝试手动执行 go 命令,并查看是否能够正常工作。
以下是手动执行 go 命令的步骤:
1. 打开终端。
2. 运行以下命令连接到服务器:

ssh user@server
  1. 在服务器上执行 go 命令,例如:
go version
  1. 如果 go 命令能够正常执行,说明问题可能是 Terraform 配置文件中的问题。你可以检查 Terraform 配置文件中的 provisioner 部分,确保命令正确。

如果以上方案都没有解决问题,可能是其他原因导致的。你可以进一步调查错误信息,查找更多解决方案。

正文完