From d10564f5f4cd50bfedb9df380e8cde3fcf904453 Mon Sep 17 00:00:00 2001 From: Yoan Blanc Date: Thu, 22 Feb 2018 11:08:45 +0100 Subject: [PATCH] machine exoscale: support SSH key file Signed-off-by: Yoan Blanc --- machine/drivers/exoscale.md | 47 ++++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/machine/drivers/exoscale.md b/machine/drivers/exoscale.md index ec820012f8..1d2932fee3 100644 --- a/machine/drivers/exoscale.md +++ b/machine/drivers/exoscale.md @@ -4,16 +4,18 @@ keywords: machine, exoscale, driver title: Exoscale --- -Create machines on [Exoscale](https://www.exoscale.ch/). +Create machines on [Exoscale](https://www.exoscale.com/). -Get your API key and API secret key from [API details](https://portal.exoscale.ch/account/api) and pass them to `machine create` with the `--exoscale-api-key` and `--exoscale-api-secret-key` options. +Get your API key and API secret key from [API details](https://portal.exoscale.com/account/api) and pass them to `machine create` with the `--exoscale-api-key` and `--exoscale-api-secret-key` options. ## Usage $ docker-machine create --driver exoscale \ --exoscale-api-key=API \ --exoscale-api-secret-key=SECRET \ - vm + MY_COMPUTE_INSTANCE + +If you encounter any troubles, activate the debug mode with `docker-machine --debug create ...`. ## Options @@ -21,11 +23,12 @@ Get your API key and API secret key from [API details](https://portal.exoscale.c - `--exoscale-api-key`: **required** Your API key; - `--exoscale-api-secret-key`: **required** Your API secret key; - `--exoscale-availability-zone`: Exoscale [availability zone][datacenters] (ch-dk-2, at-vie-1, de-fra-1, ...); -- `--exoscale-disk-size`: Disk size for the host in GB (10, 50, 100, 200, 400); +- `--exoscale-disk-size`: Disk size for the host in GiB (at least 10); - `--exoscale-image`: Image template, for example `ubuntu-16.04`, also known as `Linux Ubuntu 16.04 LTS 64-bit`, [see below](#image-template-name)); - `--exoscale-instance-profile`: Instance profile (Small, Medium, Large, ...); - `--exoscale-security-group`: Security group. _It is created if it doesn't exist_; -- `--exoscale-ssh-user`: SSH username, such as `ubuntu`, [see below](#ssh-username)); +- `--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 as `ubuntu`, [see below](#ssh-username)); - `--exoscale-url`: Your API endpoint; - `--exoscale-userdata`: Path to file containing user data for [cloud-init](https://cloud-init.io/); @@ -38,9 +41,10 @@ Get your API key and API secret key from [API details](https://portal.exoscale.c | **`--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` | `ubuntu-16.04` | +| `--exoscale-image` | `EXOSCALE_IMAGE` | `Linux Ubuntu 16.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.ch/compute` | | `--exoscale-userdata` | `EXOSCALE_USERDATA` | - | @@ -49,7 +53,8 @@ Get your API key and API secret key from [API details](https://portal.exoscale.c ### Image template name -The [VM templates][templates] available at Exoscale are listed on the Portal when adding a new instance. +The [VM templates][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. @@ -61,28 +66,38 @@ and version, as shown below. | 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 and Windows Server. +**NB:** Docker doesn't work for non-Linux machines like OpenBSD or Windows Server. ### SSH Username -The exoscale driver does a wild guess to match the default SSH user. If left empty, it picks a suitable one: +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 7.3+; -- `core` for Linux CoreOS; -- `debian` for Debian 8+; +- `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`. ### Custom security group 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](/engine/swarm/swarm-tutorial/), also add TCP port 2377. +Moreover, if you want to use [Docker Swarm](/engine/swarm/swarm-tutorial/), also add TCP port 2377, UDP/TCP on 7946, and UDP on 4789. + +### Debian 9 + +The [default storage driver][storagedriver] may fail on Debian, specifying `overlay2` should resolve this issue. + + $ docker-machine create --engine-storage-driver overlay2 ...` ### More than 8 docker machines? 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` -[templates]: https://www.exoscale.ch/open-cloud/templates/ -[datacenters]: https://www.exoscale.ch/infrastructure/datacenters/ -[anti-affinity]: https://community.exoscale.ch/documentation/compute/anti-affinity-groups/ +[storagedriver]: https://docs.docker.com/storage/storagedriver/select-storage-driver/#docker-ce +[templates]: https://www.exoscale.com/templates/ +[datacenters]: https://www.exoscale.com/datacenters/ +[anti-affinity]: https://community.exoscale.com/documentation/compute/anti-affinity-groups/