The Exoscale command-line interface
exo is the official command-line tool to access Exoscale’s services. It allows you to manage your infrastructure from an user friendly command-line with the benefits of a scriptable interface.
To get started download the archive corresponding to your operating system from the latest release on GitHub.
Debian / Ubuntu
$ sudo dpkg -i cli_$VERSION_linux_amd64.deb
RedHat / CentOS
sudo rpm -i cli_$VERSION_linux_amd64.rpm
- Expand it
- Put the
exobinary into your
You can run the cli as a Docker container with the following command
docker run -it exoscale/cli <command argument>
The docker builds are for amd64 architecture only. For arm or arm64 use the tar.gz release
Install with Homebrew:
brew tap exoscale/tap brew install exoscale-cli
- Download and open
- Copy the
exoexecutable in a directory inside your
The binary file works for both the traditional Command Prompt as well as the more modern PowerShell.
Open the command-line shell (
cmd.exe) and type the following commands
mkdir C:\exoscale setx path "%path%;C:\exoscale;"
Put all files from zip archive into
A configuration file holding your credentials is required. You can generate one via a guided prompt. The following parameters are requested:
If you don’t already have a key and the corresponding secret, you can generate one using the Exoscale Console. To do so, log in and navigate to:
The CLI will guide you in the initial configuration.
$ exo config
The configuration file will be saved in the
.exoscale folder in your home directory.
You are now ready to use the CLI. Start by calling the raw
This will give you a list of the possible commands and options:
Manage your Exoscale infrastructure easily Usage: exo [command] Available Commands: affinitygroup Affinity groups management api Exoscale api config Manage config for exo cli dns DNS cmd lets you host your zones and manage records eip Elastic IPs management firewall Security groups management help Help about any command privnet Private networks management sos Simple Object Storage management ssh SSH into a virtual machine instance sshkey SSH key pairs management template Templates details version Print the version of exo vm Virtual machines management zone List all available zones Flags: -C, --config string Specify an alternate config file [env EXOSCALE_CONFIG] -h, --help help for exo -A, --use-account string Account to use in config file [env EXOSCALE_ACCOUNT] Use "exo [command] --help" for more information about a command.
Create a virtual machine
exo vm command allows you to do basic CRUD operations on Compute instances.
exo vm create to deploy an instance:
$ exo vm create example Creating private SSH key Deploying "example" 100 % [======================================] What to do now? 1. Connect to the machine > exo ssh example ssh -i "~/.exoscale/instances/1/id_rsa" firstname.lastname@example.org 2. Put the SSH configuration into ".ssh/config" > exo ssh example --info Host example HostName 220.127.116.11 User ubuntu IdentityFile ~/.exoscale/instances/1/id_rsa Tip of the day: You're the sole owner of the private key. Be cautious with it.
The command automatially create an ssh key specifically for this instance. If you wished to use an SSH key of yours, you can refer to it by name via the
--keypair <keyname> option.
Create a firewall rule to allow SSH connection
By default, security groups without any rule specified block all incoming connections.
To reach your machine via SSH, you have to explicitly allow ingress on port 22.
exo firewall command lets you do so:
$ exo firewall add default ssh --my-ip Add "ssh" rule for "default" 100 % [======================================] ┼─────────┼───────────────────────┼──────────┼───────────┼ │ TYPE │ SOURCE │ PROTOCOL │ PORT │ ┼─────────┼───────────────────────┼──────────┼───────────┼ │ INGRESS │ CIDR 18.104.22.168/32 │ tcp │ 22 (ssh) │ ┼─────────┼───────────────────────┼──────────┼───────────┼
exo firewall add default ssh open connections for all IPv4 sources:
--my-ip flag, the rule will be scoped to your current IP, e.g.
Connect to your virtual machine via SSH using the command-line
exo ssh command allows you to directly open an SSH connection to an instance.
$ exo ssh example Host key fingerprint is SHA256:nmAfu17qHLkJkEpOy2qXWaV5nSMq0yzKD6j0giZIghk Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.15.0-20-generic x86_64) ubuntu@example:~$
Removing an instance is as simple as creating one. Be cautious as there are no ways to undo a deletion.
$ exo vm delete example [+] sure you want to delete "example" virtual machine [yN]: y Destroying "example" 100 % [======================================]
The complete documentation
There is an in-line help to explore all the possibilities.
$ exo --help