machine exoscale: support SSH key file

Signed-off-by: Yoan Blanc <yoan.blanc@exoscale.ch>
This commit is contained in:
Yoan Blanc 2018-02-22 11:08:45 +01:00 committed by Joao Fernandes
parent 25d20f02d3
commit d10564f5f4
1 changed files with 31 additions and 16 deletions

View File

@ -4,16 +4,18 @@ keywords: machine, exoscale, driver
title: Exoscale 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 ## Usage
$ docker-machine create --driver exoscale \ $ docker-machine create --driver exoscale \
--exoscale-api-key=API \ --exoscale-api-key=API \
--exoscale-api-secret-key=SECRET \ --exoscale-api-secret-key=SECRET \
vm MY_COMPUTE_INSTANCE
If you encounter any troubles, activate the debug mode with `docker-machine --debug create ...`.
## Options ## 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-key`: **required** Your API key;
- `--exoscale-api-secret-key`: **required** Your API secret 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-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-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-instance-profile`: Instance profile (Small, Medium, Large, ...);
- `--exoscale-security-group`: Security group. _It is created if it doesn't exist_; - `--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-url`: Your API endpoint;
- `--exoscale-userdata`: Path to file containing user data for [cloud-init](https://cloud-init.io/); - `--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-api-secret-key`** | `EXOSCALE_API_SECRET` | - |
| `--exoscale-availability-zone` | `EXOSCALE_AVAILABILITY_ZONE` | `ch-dk-2` | | `--exoscale-availability-zone` | `EXOSCALE_AVAILABILITY_ZONE` | `ch-dk-2` |
| `--exoscale-disk-size` | `EXOSCALE_DISK_SIZE` | `50` | | `--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-instance-profile` | `EXOSCALE_INSTANCE_PROFILE` | `small` |
| `--exoscale-security-group` | `EXOSCALE_SECURITY_GROUP` | `docker-machine` | | `--exoscale-security-group` | `EXOSCALE_SECURITY_GROUP` | `docker-machine` |
| `--exoscale-ssh-key` | `EXOSCALE_SSH_KEY` | - |
| `--exoscale-ssh-user` | `EXOSCALE_SSH_USER` | - | | `--exoscale-ssh-user` | `EXOSCALE_SSH_USER` | - |
| `--exoscale-url` | `EXOSCALE_ENDPOINT` | `https://api.exoscale.ch/compute` | | `--exoscale-url` | `EXOSCALE_ENDPOINT` | `https://api.exoscale.ch/compute` |
| `--exoscale-userdata` | `EXOSCALE_USERDATA` | - | | `--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 ### 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 For any Linux template, you may use the shorter name composed only of the name
and version, as shown below. and version, as shown below.
@ -61,28 +66,38 @@ and version, as shown below.
| Linux CentOS 7.3 64-bit | `centos-7.3` | | Linux CentOS 7.3 64-bit | `centos-7.3` |
| Linux CoreOS stable 1298 64-bit | `coreos-stable-1298` | | 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 ### 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+; - `centos` for CentOS;
- `core` for Linux CoreOS; - `core` for Linux CoreOS (aka Container Linux);
- `debian` for Debian 8+; - `debian` for Debian;
- `ubuntu` for Ubuntu; - `ubuntu` for Ubuntu;
- `fedora` for Fedora;
- `cloud-user` for Red Hat;
- otherwise, `root`. - otherwise, `root`.
### Custom security group ### 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. 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? ### 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` 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/ [storagedriver]: https://docs.docker.com/storage/storagedriver/select-storage-driver/#docker-ce
[datacenters]: https://www.exoscale.ch/infrastructure/datacenters/ [templates]: https://www.exoscale.com/templates/
[anti-affinity]: https://community.exoscale.ch/documentation/compute/anti-affinity-groups/ [datacenters]: https://www.exoscale.com/datacenters/
[anti-affinity]: https://community.exoscale.com/documentation/compute/anti-affinity-groups/