blob: b8e900cb2fab5ad6364eb70b8489c2c28c45203a [file] [log] [blame] [view]
# Fuchsia GCE Scripts
The scripts in this directory are convenience wrappers around primarily two
tools: `make-fuchsia-vol` that is a host tool in the build, and `gcloud` which
is the command like client for Google Cloud.
The scripts are usable via `//scripts/gce/gce` as an executable bash script.
## Prerequisites
* You have followed the Fuchsia getting started documents: /docs/getting_started
* You have installed & configured gcloud(1): https://cloud.google.com/sdk/gcloud/
* You have setup defaults for gcloud, e.g.:
```
gcloud auth login
gcloud config set project my-awesome-cloud
gcloud config set compute/region us-west1
gcloud config set compute/zone us-west1-a
```
## Building and running an image
The following incantation will create the relevant disk images and boot a
Fuchsia instance:
```
cd $FUCHSIA_ROOT
fx set core.x64 --release
fx build
fx gce create-fuchsia-image
fx gce create-instance
sleep 60
fx gce serial
fx gce delete-instance
```
## How the sausage is made
### gce/env.sh
The gce script suite comes with an `env.sh` that sets default environment
variables used by gce subcommands. The `gce` entrypoint script sources this.
Users can override all of the variables seen in `env.sh`, for example, altering
the name of the GCE instance you create/delete can be done by setting
`$FUCHSIA_GCE_INSTANCE`. See the contents of the script for more options.
### Fuchsia volumes
The Fuchsia disk images are built as standard x86-64 EFI bootable GPT volumes.
### Command execution
The `gce` entrpoint script sources `env.sh`, then looks for a command script in
the `gce` scripts directory that matches the first argument given to it. If it
finds one, it shifts the first argument and execs that script.
## Commands
* make-fuchsia-image - builds a local image file containing your local fuchsia
build
* create-fuchsia-image - builds and uploads a fuchsia image to GCE.
* serial - attaches to the instance serial port. Note that you will need to
have an appropriately configured compute engine ssh key for this to work. If
you have a more tuned ssh configuration, you may need to add
`~/.ssh/google_compute_engine` to your `ssh-agent`.
* create-instance - create a GCE instance running fuchsia based on the most
recently created fuchsia image.
* delete-instance - deletes a GCE instance created by `create-instance`.