Pick the latest release from GitHub
To using the latest version.
$ go get github.com/exoscale/docker-machine-driver-exo
Create machines on Exoscale.
Get your API key and API secret key from API details and pass them to machine create
with the --exoscale-api-key
and --exoscale-api-secret-key
options.
$ docker-machine create --driver exo \
--exoscale-api-key=API \
--exoscale-api-secret-key=SECRET \
MY_COMPUTE_INSTANCE
If you encounter any troubles, activate the debug mode with docker-machine --debug create ...
.
--exoscale-affinity-group
: Anti-affinity group the machine is started in.--exoscale-api-key
: required Your API key;--exoscale-api-secret-key
: required Your API secret key;--exoscale-availability-zone
: Exoscale availability zone (ch-dk-2, at-vie-1, de-fra-1, ...);--exoscale-disk-size
: Disk size for the host in GiB (at least 10);--exoscale-image
: Image template, for exampleubuntu-16.04
, also known asLinux Ubuntu 16.04 LTS 64-bit
, see below);--exoscale-instance-profile
: Instance profile (Small, Medium, Large, ...);--exoscale-security-group
: Security group. It is created if it doesn't exist;--exoscale-ssh-key
: Path to the SSH user private key. A new one is created if left empty;--exoscale-ssh-user
: SSH username to connect, such asubuntu
, see below);--exoscale-url
: Your API endpoint;--exoscale-userdata
: Path to file containing user data for cloud-init;
CLI option | Environment variable | Default |
---|---|---|
--exoscale-affinity-group |
EXOSCALE_AFFINITY_GROUP |
- |
--exoscale-api-key |
EXOSCALE_API_KEY |
- |
--exoscale-api-secret-key |
EXOSCALE_API_SECRET |
- |
--exoscale-availability-zone |
EXOSCALE_AVAILABILITY_ZONE |
ch-dk-2 |
--exoscale-disk-size |
EXOSCALE_DISK_SIZE |
50 |
--exoscale-image |
EXOSCALE_IMAGE |
Linux Ubuntu 18.04 LTS 64-bit |
--exoscale-instance-profile |
EXOSCALE_INSTANCE_PROFILE |
small |
--exoscale-security-group |
EXOSCALE_SECURITY_GROUP |
docker-machine |
--exoscale-ssh-key |
EXOSCALE_SSH_KEY |
- |
--exoscale-ssh-user |
EXOSCALE_SSH_USER |
- |
--exoscale-url |
EXOSCALE_ENDPOINT |
https://api.exoscale.com/compute |
--exoscale-userdata |
EXOSCALE_USERDATA |
- |
NB: the instance profile, image, and availability zone are case insensitive.
The VM templates available at Exoscale are listed on the Portal when adding a new instance.
For any Linux template, you may use the shorter name composed only of the name and version, as shown below.
Full name | Short name |
---|---|
Linux Debian 8 64-bit | debian-8 |
Linux Ubuntu 16.04 LTS 64-bit | ubuntu-16.04 |
Linux CentOS 7.3 64-bit | centos-7.3 |
Linux CoreOS stable 1298 64-bit | coreos-stable-1298 |
NB: Docker doesn't work for non-Linux machines like OpenBSD or Windows Server.
The Exoscale driver does an educated guess to pick the correct default SSH user. If left empty, it picks a suitable one following those rules:
centos
for CentOS;core
for Linux CoreOS (aka Container Linux);debian
for Debian;ubuntu
for Ubuntu;fedora
for Fedora;cloud-user
for Red Hat;- otherwise,
root
.
If a custom security group is provided, you need to ensure that you allow TCP ports 22 and 2376 in an ingress rule.
Moreover, if you want to use Docker Swarm, also add TCP port 2377, UDP/TCP on 7946, and UDP on 4789.
The default storage driver may fail on Debian, specifying overlay2
should resolve this issue.
$ docker-machine create --engine-storage-driver overlay2 ...`
There is a limit to the number of machines that an anti-affinity group can have. This can be worked around by specifying an additional anti-affinity group using --exoscale-affinity-group=docker-machineX