Google provides a set of startup scripts that interact with the virtual machine environment. On boot, the startup script /usr/share/google/onboot
queries the instance metadata for a user-provided startup script to run. User-provided startup scripts can be specified in the instance metadata under startup-script
or, if the metadata is in a small script or a downloadable file, it can be specified via startup-script-url
. You can use gcloud compute or the Google Compute Engine API to specify a startup script.
For more information on how to use startup scripts, read the Using Start Up Scripts documentation.
Below is an example of metadata that indicates a startup script URL and a startup script file was passed to the instance:
{ // instance metadata: { "kind": "compute#metadata", "items": [ { "key": "startup-script-url", "value": "http://startup-script-url: } ] } } { // instance metadata: { "kind": "compute#metadata", "items": [ { "key": "startup-script", "value": "#! /bin/python\nprint ‘startup’\n" } ] } }
Google startup scripts also perform the following actions:
Checks the value of the instance id key
Startup scripts check the value of the instance ID at:
http://169.254.169.254/computeMetadata/v1/instance/id
and compares it to the last instance ID the disk booted on.
Sets the hostname from the metadata server via DHCP exit hooks.
Updates gsutil authentication.
Startup scripts run /usr/share/google/boto/boot_setup.py
which configures and copies /usr/share/google/boto/boto_plugins/compute_auth.py
into the boto plugin directory.
Provides udev rules to give friendly names to disks.
Google Compute Engine provides /lib/udev/rules.d/65-gce-disk-naming.rules
in our images.
Safely formats persistent disks via /usr/share/google/safe_format_and_mount
.