问题 运行 GCP 中修改后的启动脚本

Problem running a modified startup-script in GCP

我正在尝试使用 GCP 部署管理器中的实例模板设置实例。它工作正常,但在元数据中添加启动脚本后,它没有。

这是我正在尝试的代码(和脚本)运行:

gcloud compute instances create my-instance --source-instance-template my-it --zone=northamerica-northeast1-a --network=my-network --subnet=my-subnet --no-address --metadata=startup-script='sudo /opt/scripts/startup.sh #! /bin/bash sudo htpasswd -c -B -b /etc/nginx/.htpasswd test test'

此处,以下部分来自实例模板本身,我正在尝试添加后者。

sudo /opt/scripts/startup.sh

感谢任何帮助,谢谢!

GCP 文档说,当从实例模板创建 VM 时,默认行为是完全按照实例模板中的描述创建 VM 实例,实例名称和区域除外;如果你想覆盖一个属性,你只需要传递新的值。 Create a vm instance from an instance template with overrides

从文档中可以看出gcloud compute instance-templates有相同的--metadata--metadata-from-file 标记为 gcloud 计算实例 gcloud compute instance-templates,gcloud compute instance create

因此,在使用 --source-instance-template=my_template[=25 创建新实例时,--元数据 的任何新值=] 只会覆盖实例模板中的值(不添加)。 --metadata-from-file 标志可能更适合您的用例(新的 .sh 与 startup-script 表单实例模板 + 额外步骤)