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

You can add a startup script to an already created VM by creating a new custom metadata field. Follow these steps:

  1. Get to your VM's configuration page: Navigate to https://console.developers.google.com Click your project. Go to Compute -> Compute Engine -> VM Instances. Click the name of your VM.
  2. Scroll down to Custom Metadata. Click Edit.
  3. Create a new metadata field. Set the key to startup-script.
  4. Paste your startup script into the value field. Don't forget the shebang. Here's an example of a valid script.

    #! /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. Restart your VM. Enjoy the yields of your awesome startup script.

Thanks to mimming's answer, I was looking for this to solve my issue regarding multiple IP, and his answer help me get started and finally solved my problem by add below startup-script when reboot the instance.

#! /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

remember to add "sleep 60" otherwise it might not working cause the networking not started yet.