首页 > 解决方案 > 使用关闭脚本创建一个新的谷歌云实例

问题描述

我正在尝试使用关闭脚本从现在正在关闭的实例中创建一个新实例。

该脚本有三个任务,1. 创建一个空文件 2. 获取要创建的新实例的名称 3. 为下一个要生成的新实例生成一个名称 4. 在此实例中创建一个具有名称的新实例生成。

这是脚本:

#!/bin/bash

touch /home/ubuntu/newfile.txt

new_instance_name=$(curl http://metadata.google.internal/computeMetadata/v1/instance/attributes/next_instance_name -H "Metadata-Flavor: Google")

next_instance_name="instance-"$(printf "%04d" $((${new_instance_name: -4}+1)))

gcloud beta compute --project=xxxxxxxxx instances create $new_instance_name --zone=us-central1-c --machine-type=f1-micro --subnet=default --network-tier=PREMIUM --metadata=next_instance_name=$next_instance_name --maintenance-policy=MIGRATE --service-account=XXXXXXXX-compute@developer.gserviceaccount.com --scopes=https://www.googleapis.com/auth/cloud-platform --image=image-1 --image-project=xxxxxxxx --boot-disk-size=10GB --boot-disk-type=pd-standard --boot-disk-device-name=$new_instance_name

这个脚本是可执行chmod +x的,脚本的文件名是/home/ubuntu/shtudown_script.sh.heshutdown-script这个实例的元数据也是/home/ubuntu/shtudown_script.sh.

当我从实例中手动运行脚本时,脚本的所有部分都运行良好,因此会创建一个新文件,并且在当前实例关闭时也会创建一个新实例。

但是当我stop实例化时从API调用它时,它只创建我使用touch命令创建的文件,但没有像以前那样创建新实例。

我在这里做错了吗?

标签: google-compute-engine

解决方案


所以我能够重现你描述的行为。我运行了一个类似于您作为关闭脚本提供的 bash 脚本,它只会创建名为“newfile.txt”的空文件。

然后我决定附加 gcloud 命令的输出以查看发生了什么。我不得不调整 bash 脚本以适应我的项目。这是我运行以将输出复制到文件的 bash 脚本:

#!/bin/bash

touch /home/ubuntu/newfile.txt

gcloud beta compute --project=xxx instances create instance-6 --zone=us-central1-c --machine-type=f1-micro --subnet=default --maintenance-policy=MIGRATE --service-account=xxxx-compute@developer.gserviceaccount.com --scopes=https://www.googleapis.com/auth/cloud-platform --boot-disk-size=10GB --boot-disk-type=pd-standard --boot-disk-device-name=instance-6 > /var/output.txt 2>&1

我收到的输出如下:

错误:(gcloud.beta.compute.instances.create)无法获取资源:-权限不足

这意味着我的默认服务帐户没有适当的范围来创建 VM 实例。

然后,我停止了我的 VM 实例并编辑了范围以赋予服务帐户完全访问权限,如此所述。更改范围后,我启动了 VM 实例备份,然后再次停止它。至此,它成功创建了名为“instance-6”的VM实例。我不建议给默认服务完全访问权限。我建议指定它应该具有哪些范围,但如果您希望关闭脚本正常工作,请确保它具有对 Compute Engine 的完全访问权限。


推荐阅读