在Terraform和Cloudbuild中找不到Gsutil

在Terraform和Cloudbuild中找不到Gsutil,terraform,google-cloud-build,gsutil,Terraform,Google Cloud Build,Gsutil,我的计划在使用云构建时遇到问题。我无法在模块地形中使用gsutil命令,我有一个错误: Error: Error running command 'gsutil -m rsync -d -r ../../../sources/composer gs://toto/dags/': exit status 127. Output: /bin/sh: gsutil: not found My cloudbuild.yaml: steps: - id: 'branch name' name: 'a

我的计划在使用云构建时遇到问题。我无法在模块地形中使用gsutil命令,我有一个错误:

Error: Error running command 'gsutil -m rsync -d -r ../../../sources/composer gs://toto/dags/': exit status 127. Output: /bin/sh: gsutil: not found
My cloudbuild.yaml:

steps:
- id: 'branch name'
  name: 'alpine'
  entrypoint: 'sh'
  args:
    - '-c'
    - |
      echo "***********************"
      echo "$BRANCH_NAME"
      echo "***********************"
...
# [START tf-apply]
- id: 'tf apply'
  name: 'hashicorp/terraform:0.15.0'
  entrypoint: 'sh'
  args:
    - '-c'
    - |
      if [ -d "terraform/environments/$BRANCH_NAME/" ]; then
        cd terraform/environments/$BRANCH_NAME      
        terraform apply -auto-approve
      else
        echo "***************************** SKIPPING APPLYING *******************************"
        echo "Branch '$BRANCH_NAME' does not represent an oficial environment."
        echo "*******************************************************************************"
      fi
# [END tf-apply]
timeout: 3600s
将文件放入gcs的我的模块:

resource "null_resource" "upload_folder_content" {
  provisioner "local-exec" {
    command = "gsutil -m rsync -d -r ${var.dag_folder_path} ${var.composer_dag_gcs}/"
  }
}

如果您查看实际的错误行,在最后,它表示这是命令的输出:

/bin/sh: gsutil: not found
我怀疑在shell的路径上根本找不到
gsutil


当您在步骤中使用Hashicorp的Terraform映像时,可能需要安装在?

中找到的任何包
gsutil
,默认情况下,
gsutil
它不包括在内,因此您无法运行null_资源定义的命令,而不是您可以在本地环境中执行的命令


为了克服这一点,您可以构建自己的自定义图像并将其保存到Google容器注册表中,以便以后可以使用它。使用该选项,您还将具有更大的灵活性,因为您可以安装Terraform代码的任何依赖项。

我同意您的看法,但问题是我正在使用Cloud Build运行Terraform计划,而我无法安装gsutil,因为它处于无服务器模式。我正在使用图像:hashicorp/terraform:0.15.0感谢您的回答。这是唯一的解决方案,把文件放在地面军事系统与云建设和地形。最后,我们使用自己的jenkins服务器,安装了terraform和gsutil。很高兴我能帮上忙!Jenkins可能会更好,因为您对环境有更多的控制,并且可以安装插件,有很多方便的功能可以使用:)