CLI Tool

CUDO Compute has a CLI tool called `cudoctl` to manage all of your resources within the platform.

You will need to create an API key from the web UI before you can use cudoctl.

Download

We have multiple download links for different kind of operating systems and architectures.

MacOS - amd64

MacOS - arm64

MacOS - universal

Debian - amd64

Debian - arm64

RedHat (RPM) - amd64

RedHat (RPM) - arm64

Other Linux - amd64

Other Linux - arm64

Windows

If you have any issues with our CLI tool, please reach out to our support team at [email protected]

Getting Started

Run cudoctl init and follow the steps.

$ cudoctl init
 api key: my-api-key
 project: my-project
 billing account: my-billing-account
 context: default
config file saved ~/.config/cudo/cudo.yml

A config file will be maintained in $HOME/.config/cudo/cudo.yml

configVersion: v0
keys:
    - key: xxxyyyzzz
      name: my-first-api-key
    - key: aaabbbccc
      name: my-second-api-key
contexts:
    - name: cudo-demo
      key: my-first-api-key
      billing-account: xxxxxxxxx
      project: my-project
    - name: cudo-demo-2
      key: my-second-api-key
      billing-account: xxxxxxxxx
      project: my-other-project
current-context: cudo-demo

The file can be edited manually, and new contexts can be added using cudoctl init. Multiple contexts can be setup which are used like profiles when cudoctl runs. One context is selected at a time as the current context.

Show help at any level by using -h e.g cudoctl -h

Global Options

Global options are used to set top level options that affect the rest of the execution of cudoctl . See cudoctl -h for more details.

# choose a config file
$ cudoctl --config /etc/config/cudo.yaml <group> [command]

# set context with an environment variable
$ CUDOCTL_CONTEXT=local cudoctl <group> [command]

# output in json
$ cudoctl --json <group> [command]

Config

Show and set the current config context. See cudoctl config -h for more details.

$ cudoctl config current
local

$ cudoctl config use cudo-demo-2

$ cudoctl config current
cudo-demo-2

$ cudoctl config show
name: cudo-demo-2
key: my-second-api-key
billing-account: xxxxxxxxx
project: my-other-project

SSH Keys

See cudoctl ssh-keys -h for more details.

Initialise SSH key access to virtual machines

Using initialise is an interactive way to add an SSH key to your account.

You can choose a locally found key or chose another key.

$ cudoctl ssh-keys init
  Use the arrow keys to navigate:? Upload an SSH key:
 ssh-rsa SHA256:asd123 [email protected]
    other key
Added ssh-rsa key to your account

To use another key, you can enter a path to a key or paste a key directly into the terminal.

$ cudoctl ssh-keys init
 other key
Use the arrow keys to navigate:? Upload an SSH key:
 enter key file path
    enter key

Enter a key from a path

$ cudoctl ssh-keys init
 other key
 enter key file path
 file path: ~/.ssh/id_rsa.pub
Added ssh-rsa key to your account

or paste a key directly into the terminal.

$ cudoctl ssh-keys init
 other key
 enter key
 key: SHA256:asd123 [email protected]
Added ssh-rsa key to your account

Add an SSH key

$ cudoctl ssh-keys add -file path/to/key.pub

List SSH keys

$ cudoctl ssh-keys add list
pageNumber: 1
pageSize: 10
sshKeys:
    - comment: [email protected]
      createTime: "2022-11-04T12:08:16.822678Z"
      fingerprint: SHA256:asd123
      id: r8th1g7d1vc2
      publicKey: ssh-rsa asd123... [email protected]
      type: ssh-rsa
    ...
totalCount: 1

Delete an SSH key

$ cudoctl ssh-keys delete r8th1g7d1vc2

List available OS images

List the available OS images. OS images define the initial state of the boot volume of virtual machines.

$ cudoctl search images
- description: Ubuntu 20.04 LTS (focal)
  id: ubuntu-2004
  name: Ubuntu 20.04
  size: 2.4 GB
  ...

Find available virtual machines

Search for available compute resources. See cudoctl search -h to see filtering options.

$ cudoctl search
- machineType: sgwnzk4cp4bf
  cpu: Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz
  memoryGb: 8
  pricePerHour: 0.018412698
  region: europe-west
  storageGb: 26
  vcpus: 4
  ...

Find available virtual machines with minimum vCPUs

$ cudoctl search -cores 4
- machineType: sgwnzk4cp4bf
  cpu: Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz
  memoryGb: 8
  pricePerHour: 0.02
  region: europe-west
  storageGb: 26
  vcpus: 4
  ...

Find available GPU enabled virtual machines

$ cudoctl search -gpus 1
- machineType: riycyl5fzkm9
  cpu: Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
  gpuVendor: nvidia
  gpuClass: GTX 1080
  gpuMemoryGb: 11
  gpuCount: 1
  memoryGb: 188
  pricePerHour: 10
  region: europe-west
  storageGb: 145
  vcpus: 56
  ...

Projects

A project is a container for cloud resources. You need to create a project before you can create virtual machines. See cudoctl projects -h for more details.

Create a project

$ cudoctl projects create example-project
billingAccountId: yyfh32y6d9v2
createBy: user-account-id
id: example-project

List projects

$ cudoctl projects
projects:
    - billingAccountId: yyfh32y6d9v2
      createBy: user-account-id
      id: example-project
    ...

Delete a project

$ cudoctl projects delete example-project

Virtual machines

A virtual machine is a billable computing resource. You need to create a project before you can create virtual machines. See cudoctl virtual-machines -h for more details.

Get a virtual machine

$ cudoctl vm get ***VIRTUAL_MACHINE_NAME***

Create a virtual machine

$ cudoctl vm create
  --image=***IMAGE_NAME***
  --compute=***COMPUTE_ID***
  [***VIRTUAL_MACHINE_NAME***]

Reset a virtual machine

$ cudoctl vm reset ***VIRTUAL_MACHINE_NAME***

Start a virtual machine

$ cudoctl vm start ***VIRTUAL_MACHINE_NAME***

Stop a virtual machine

$ cudoctl vm stop ***VIRTUAL_MACHINE_NAME***

Delete a virtual machine

$ cudoctl vm delete ***VIRTUAL_MACHINE_NAME***

Help

$ cudoctl -h
usage: "cudoctl [global option...] <group> [group option...] [<cmd> [cmd option...]] [<sub cmd> [sub cmd option...]]"

Get started with "cudoctl init" to initialise a config interactively. Use "cudoctl config use <name>" to switch between config contexts.

basic groups:
  config                show and set the config context
  ssh-keys              manage ssh keys used to access VMs
  search                search for available compute resources
  virtual-machines      manage VM resources in a project

other groups:
  api-keys              manage long lived credentials that allow access to cudo
  auth                  manage permissions for projects, data centers and billing accounts you own
  billing-accounts      billing accounts group spend and earnings for projects and data centers
  data-centers          host resources are grouped into data centers for management
  projects              compute resources are grouped into projects for management

global options:
  -config string
        the path to a config file to use (env: CUDOCTL_CONFIG) (default "/Users/chris/.config/cudo/cudo.yml")
  -context string
        the name of a config context to use (env: CUDOCTL_CONTEXT)
  -json
        json output (env: CUDOCTL_JSON)
  -session string
        temporary authentication session token (env: CUDOCTL_SESSION)
  -verbose int
        output verbosity 0-2
  -version
        show the version of cudoctl

Use "cudoctl [group [command]] -h" for more information about a given group or command.
parsing flag: help requested