在 Terraform 和 Cloudbuild 中找不到 Gsutil
Gsutil not found with Terraform and Cloudbuild
我的计划 terraform 在使用云构建时遇到问题。我无法在模块 terraform 中使用 gsutil 命令,出现错误:
Error: Error running command 'gsutil -m rsync -d -r ../../../sources/composer gs://toto/dags/': exit status 127. Output: /bin/sh: gsutil: not found
我的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
我怀疑 gsutil
根本没有在您的 shell 路径上找到。
也许您需要安装 gsutil
所在的任何软件包?
由于您在步骤中使用了 Hashicorp 的 Terraform 图像,因此可以预料 gsutil
默认情况下不包含它,因此您无法 运行 命令您的null_resource 与您在本地环境中能够执行的操作相反。
为了克服这个问题,您可以构建自己的自定义映像并将其 push 到 Google Container Registry,以便您以后可以使用它。使用该选项,您还将拥有更大的灵活性,因为您可以安装 Terraform 代码具有的任何依赖项。
我的计划 terraform 在使用云构建时遇到问题。我无法在模块 terraform 中使用 gsutil 命令,出现错误:
Error: Error running command 'gsutil -m rsync -d -r ../../../sources/composer gs://toto/dags/': exit status 127. Output: /bin/sh: gsutil: not found
我的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
我怀疑 gsutil
根本没有在您的 shell 路径上找到。
也许您需要安装 gsutil
所在的任何软件包?
由于您在步骤中使用了 Hashicorp 的 Terraform 图像,因此可以预料 gsutil
默认情况下不包含它,因此您无法 运行 命令您的null_resource 与您在本地环境中能够执行的操作相反。
为了克服这个问题,您可以构建自己的自定义映像并将其 push 到 Google Container Registry,以便您以后可以使用它。使用该选项,您还将拥有更大的灵活性,因为您可以安装 Terraform 代码具有的任何依赖项。