Ops can integrate with your existing Google Cloud Platform (GCP) account. You can use Ops CLI to create and upload an image in GCP account. Once, you have uploaded image, you can also create an instance with a particular image using CLI.
Create a Service Account (SA) in your GCP account and download the Service Account key json file.
Please make sure your Service Account has access to the Google Compute Engine and Google Storage.
Get the name of your Google Cloud account project where you would be creating images and instances.
Create a bucket in Google Cloud storage for image artifacts storage.
Please make sure you export GOOGLE_APPLICATION_CREDENTIALS
with the Service Account key json file path, before invoking below commands.
$ export GOOGLE_APPLICATION_CREDENTIALS=~/service-key.json
If you have already created an Ops project, you can update your existing config.json
. You need to add CloudConfig which mentions specific details like ProjectID
, BucketName
.
{"CloudConfig" :{"ProjectID" :"prod-1000","Zone": "us-west1-b","BucketName":"my-deploy"},"RunConfig" : {"Memory": "2G"}}
Once, you have updated config.json
you can create an image in Google Cloud with the following command.
$ ops image create <elf_file|program> -c config.json -i <image_name> -t gcp
For creating an image using a particular package, you need to provide the package name to ops image create
command with -p
option.
$ ops image create -c config.json -p node_v14.2.0 -a ex.js -i <image_name> -t gcp
You can list existing images on Google cloud with ops image list
.
$ ops image list+--------------------+--------+-------------------------------+| NAME | STATUS | CREATED |+--------------------+--------+-------------------------------+| nanos-main-image | READY | 2019-03-21T15:06:17.567-07:00 |+--------------------+--------+-------------------------------+| nanos-node-image | READY | 2019-04-16T23:16:03.145-07:00 |+--------------------+--------+-------------------------------+| nanos-server-image | READY | 2019-03-21T15:50:04.456-07:00 |+--------------------+--------+-------------------------------+
ops image delete <imagename>
can be used to delete an image from Google Cloud.
$ ops delete image nanos-main-image
After the successful creation of an image in Google Cloud, we can create an instance from an existing image.
You need to export GOOGLE_APPLICATION_CREDENTIALS
and pass project-id and zone with cli options.
$ export GOOGLE_APPLICATION_CREDENTIALS=<credentials_file_path>$ ops instance create <image_name> -g prod-1000 -z us-west1-b -t gcp
Alternatively, you can pass config, if you have mentioned project-id and zone in project's config.json.
$ ops instance create <image_name> -t gcp -c config.json
You can provide list of ports to be exposed on gcp instance via config and command line.
CLI example
$ ops instance create <image_name> -t gcp -p prod-1000 -z us-west1-a --port 80 --port 443
Sample config
{"CloudConfig" :{"Platform" :"gcp","ProjectID" :"prod-1000","Zone": "us-west1-a","BucketName":"my-s3-bucket"},"RunConfig": {"Ports" : [80, 443]}}
You can list instance on Google Cloud using ops instance list
command.
You need to export GOOGLE_APPLICATION_CREDENTIALS
, GOOGLE_CLOUD_PROJECT
and GOOGLE_CLOUD_ZONE
before firing command.
$ export GOOGLE_CLOUD_PROJECT=prod-1000$ export GOOGLE_CLOUD_ZONE=us-west1-b$ ops instance list+-----------------------------+---------+-------------------------------+-------------+--------------+| NAME | STATUS | CREATED | PRIVATE IPS | PUBLIC IPS |+-----------------------------+---------+-------------------------------+-------------+--------------+| nanos-main-image-1556601450 | RUNNING | 2019-04-29T22:17:34.609-07:00 | 10.240.0.40 | 34.83.204.40 |+-----------------------------+---------+-------------------------------+-------------+--------------+
Alternatively you can pass project-id and zone with cli options.
$ ops instance list -g prod-1000 -z us-west1-b
You can get logs from serial console of a particular instance using ops instance logs
command.
You need to export GOOGLE_APPLICATION_CREDENTIALS
, GOOGLE_CLOUD_PROJECT
and GOOGLE_CLOUD_ZONE
before firing command.
$ export GOOGLE_CLOUD_PROJECT=prod-1000$ export GOOGLE_CLOUD_ZONE=us-west1-b$ ops instance logs <instance_name> -t gcp
Alternatively you can pass project-id and zone with cli options.
$ ops instance logs -g prod-1000 -z us-west1-b
ops instance delete
command can be used to delete instance on Google Cloud.
You need to export GOOGLE_APPLICATION_CREDENTIALS
, GOOGLE_CLOUD_PROJECT
and GOOGLE_CLOUD_ZONE
before firing command.
$ export GOOGLE_CLOUD_PROJECT=prod-1000$ export GOOGLE_CLOUD_ZONE=us-west1-b$ ops instance delete my-instance-running
Alternatively you can pass project-id and zone with cli options.
$ ops instance delete -g prod-1000 -z us-west1-b my-instance-running
You need to set the BucketName
, ProjectID
and Zone
in the CloudConfig
section of your configuration file and export GOOGLE_APPLICATION_CREDENTIALS
before firing the command.
{"CloudConfig" :{"ProjectID" :"prod-1000","Zone": "us-west1-b","BucketName":"my-deploy"}}
$ export GOOGLE_APPLICATION_CREDENTIALS=<credentials_file_path>$ ops volume create <volume_name> -t gcp -c <configuration_file_path>
For create a volume with existing files you can add the -d
flag and the directory path.
$ export GOOGLE_APPLICATION_CREDENTIALS=<credentials_file_path>$ ops volume create <volume_name> -t gcp -c <configuration_file_path> -d <directory_path>
You can list volumes on Google Cloud using ops volume list -t gcp -c <configuration_file_path>
command.
You need to set the ProjectID
and Zone
in the CloudConfig
section of your configuration file and export GOOGLE_APPLICATION_CREDENTIALS
before firing the command.
$ ops instance list -t gcp -c <configuration_file_path>+-----------------------------+---------+-------------------------------+-------------+--------------+| NAME | STATUS | CREATED | PRIVATE IPS | PUBLIC IPS |+-----------------------------+---------+-------------------------------+-------------+--------------+| nanos-main-image-1556601450 | RUNNING | 2019-04-29T22:17:34.609-07:00 | 10.240.0.40 | 34.83.204.40 |+-----------------------------+---------+-------------------------------+-------------+--------------+
ops volume delete
command can be used to delete an instance on Google Cloud.
You need to set the ProjectID
and Zone
in the CloudConfig
section of your configuration file and export GOOGLE_APPLICATION_CREDENTIALS
before firing the command.
$ export GOOGLE_APPLICATION_CREDENTIALS=<credentials_file_path>$ ops volume delete <volume_name> -t gcp -c <configuration_file_path>
For attaching a volume you need a running instance using a image configured with a mount point. This means you have to create a volume before running the instance. After the volume created you have to specify the volume label with the same name of the volume created. You can create the image running the next command.
$ ops image create <elf_file|program> -i <image_name> -c config.json --mounts <volume_label>:<mount_path>
After having the instance running you can attach a volume using ops volume attach <instance_name> <volume_name> <volume_name> -t gcp -c <configuration_file_path>
.
Note: You need to stop and start the instance to see the changes applied.
You can detach a volume from a running instance using ops volume detach <instance_name> <volume_name> -t gcp -c <configuration_file_path>
.