我正在使用Cloud Build运行Terraform
step {
name = "hashicorp/terraform:1.0.1"
args = ["init"]
dir = env/dev
}
step {
name = "hashicorp/terraform:1.0.1"
args = ["plan"]
dir = env/dev
}
step {
name = "hashicorp/terraform:1.0.1"
args = ["apply", "-auto-approve"]
dir = env/dev
}
在我的terraform代码中有一个local-exec命令,它运行一些Linux命令和一个gcloud命令。
resource "null_resource" "gcloud" {
provisioner "local-exec" {
command = <<EOT
.
some Linux commads
.
gcloud pubsub topics list
EOT
}
}
在Terraform应用之后,它给了我:
exit status 127. Output: /bin/sh: gcloud: not found
为了解决这个问题,我使用了gcloud模块:
module "gcloud" {
source = "terraform-google-modules/gcloud/google"
version = "3.1.0"
create_cmd_endpoint = "gcloud"
create_cmd_body = "version"
destroy_cmd_body = "gcloud"
destroy_cmd_body = "version"
}
现在有两个错误:
[7:47 p.m., 2022-11-13] Milad: exit status 127. Output: /bin/sh: curl: not found
[7:47 p.m., 2022-11-13] Milad: exit status 127. Output: /bin/sh: gcloud: not found
如有任何帮助,不胜感激。
您上面提到的错误似乎是由于" gcloud "模块没有被正确合并,因此引用子命令的命令导致这种错误。" gcloud "模块的执行应该确保" gcloud "在安装过程中被解压缩并按正确的顺序进行安装。
我建议您尝试最新版本的terraform注册表,它似乎解决了这个问题。
还可以查看这些类似的例子:
- terraform中的多个命令
- 在terraform本地执行序列化shell命令