如何从开发人员控制台向现有 VM 添加启动脚本?

How do I add a startup script to an existing VM from the developer console?

我在 Google Cloud Platform 上有一个现有的、已配置的 VM。创建时没有 startup script,但我现在想添加一个。

如何从 console.developers.google.com 网络界面添加它?

您可以通过创建新的自定义元数据字段将启动脚本添加到已创建的 VM。请按照以下步骤操作:

  1. 进入您的 VM 配置页面:导航至 https://console.developers.google.com 单击您的项目。转到计算 -> 计算引擎 -> VM 实例。单击您的 VM 的名称。
  2. 向下滚动到自定义元数据。单击“编辑”。
  3. 创建一个新的元数据字段。将密钥设置为 startup-script.
  4. 将您的启动脚本粘贴到值字段中。不要忘记shebang。这是一个有效脚本的示例。

    #! /bin/bash
    apt-get update
    apt-get install -y apache2
    cat <<EOF > /var/www/index.html
    <html><body><h1>Hello World</h1>
    <p>This page was created from a simple startup script!</p>
    </body></html>
    EOF
    
  5. 重新启动您的虚拟机。享受您出色的启动脚本的收益。

感谢 mimming 的回答,我一直在寻找这个来解决我关于多个 IP 的问题,他的回答帮助我开始并最终通过在重启实例时添加下面的启动脚本解决了我的问题。

#! /bin/bash
sleep 60
/usr/sbin/ip route add default via 10.8.8.1 dev eth1 table rt1
/usr/sbin/ip rule add from 10.8.8.3/32 table rt1
/usr/sbin/ip rule add to 10.8.8.3/32 table rt1

记得加"sleep 60"否则可能会因为网络还没有启动而无法正常工作

根据问题,以上答案正确。

但我一直在寻找通过 gcloud 命令在 GCP VM 的启动元数据中添加多个 .sh 脚本。

以下适合我(也许会对某人有所帮助)

To add multiple key-value pairs at once, separate them with commas:

$ gcloud compute instances add-metadata test-instance \
      --metadata=important-data="2 plus 2 equals\
   4",unimportant-data=zero

文档 link- https://cloud.google.com/sdk/gcloud/reference/compute/instances/add-metadata