Skip to content

ponyville/docker-machine-driver-cloudscale

 
 

Repository files navigation

cloudscale.ch Docker machine driver

Go Report Card License Build Status

This library adds the support for creating Docker machines hosted on the cloudscale.ch IaaS platform.

You need to create a read/write API token under My Account > API Tokens in the cloudscale.ch Control Panel and pass it to docker-machine create as the --cloudscale-token option.

Installation

You can find sources and pre-compiled binaries here.

# Download the binary (this example downloads the binary for Linux amd64)
$ wget https://github.com/cloudscale-ch/docker-machine-driver-cloudscale/releases/download/v1.2.0/docker-machine-driver-cloudscale_v1.2.0_linux_amd64.tar.gz
$ tar xzvf docker-machine-driver-cloudscale_v1.2.0_linux_amd64.tar.gz

# Make it executable and copy the binary to a directory included in your $PATH
$ chmod +x docker-machine-driver-cloudscale
$ cp docker-machine-driver-cloudscale /usr/local/bin/

Usage

$ docker-machine create \
  --driver cloudscale \
  --cloudscale-token=... \
  --cloudscale-zone lpg1 \
  --cloudscale-image=ubuntu-18.04 \
  --cloudscale-flavor=flex-4 \
  some-machine

See docker-machine create --driver cloudscale --help for a complete list of all supported options.

Using environment variables

$ CLOUDSCALE_TOKEN=... \
  && CLOUDSCALE_IMAGE=ubuntu-18.04 \
  && CLOUDSCALE_FLAVOR=flex-4
  && CLOUDSCALE_ZONE=lpg1 \
  docker-machine create \
     --driver cloudscale \
     some-machine

See docker-machine create --driver cloudscale --help for a complete list of all supported environment variables.

Using cloud-init

User data (cloud-config for cloud-init) to use for the new server. Needs to be valid YAML.

From File

$ cat <<EOF > /tmp/my-user-data.yaml
#cloud-config
write_files:
  - path: /test.txt
    content: |
      Here is a line.
      Another line is here.
EOF
$ docker-machine create \
  --driver cloudscale \
  --cloudscale-token=... \
  --cloudscale-userdatafile=/tmp/my-user-data.yaml \
  some-machine

From Command Line

$ docker-machine create \
  --driver cloudscale \
  --cloudscale-token=... \
  --cloudscale-userdata "`echo -e "#cloud-config\nwrite_files:\n  - path: /test.txt\n    content: |\n      my cli user-data test\n"`" \
  some-machine

Options

  • --cloudscale-token: required. Your project-specific access token for the cloudscale.ch API.
  • --cloudscale-image: The slug of the cloudscale.ch image to use, see Images API for how to get a list of available images (defaults to ubuntu-18.04). A list of operating systems supported by docker-machine can be obtained here.
  • --cloudscale-flavor: The flavor of the cloudscale.ch server, see Flavor API for how to get a list of available flavors (defaults to flex-4).
  • --cloudscale-zone: The zone in which the cloudscale.ch server will be created, see Regions and Zones for how to get a list of available zones (defaults to your default zone)
  • --cloudscale-volume-size-gb: The size of the root volume in GB (defaults to 10).
  • --cloudscale-ssh-user: The SSH user (defaults to root).
  • --cloudscale-ssh-port: The SSH port (defaults to 22).
  • --cloudscale-no-public-network: Disables the public network interface.
  • --cloudscale-use-private-network: Enables the private network interface.
  • --cloudscale-use-ipv6: Enables IPv6 on public network interface.
  • --cloudscale-server-groups: the UUID identifying the server group to which the new server will be added, option can be repeated.
  • --cloudscale-anti-affinity-with: the UUID of another server to create an anti-affinity group with that server or add it to the same group as that server.
  • --cloudscale-userdata: string containing cloud-init user data
  • --cloudscale-userdatafile: path to file with cloud-init user data
  • --cloudscale-volume-ssd: size of an additional SSD volume to be attached to the server, option can be repeated.
  • --cloudscale-volume-bulk: size of an additional bulk volume to be attached to the server, option can be repeated.

Development

Fork this repository, yielding github.com/<yourAccount>/docker-machine-driver-cloudscale.

# Get the sources of your fork
$ git clone 'https://github.com/<yourAccount>/docker-machine-driver-cloudscale.git'
$ cd docker-machine-driver-cloudscale

# Build it locally
$ make build

# Make the binary accessible to docker-machine
$ export PATH="$PATH:$PWD/bin"

# Print help text including cloudscale.ch-sepcific options
$ docker-machine create --driver cloudscale --help

# To create a test snapshot release
$ make snapshot

Integration Tests

In order to run the integration test suite, please make sure that:

  1. docker, docker-machine and docker-machine-driver-cloudscale are available in your $PATH
  2. bats-core is available in your $PATH
  3. Your cloudscale.ch API Token is exported as CLOUDSCALE_TOKEN

If all of the above is fullfilled, invoke the test suite by calling:

make integration

Credits

This driver is based on the great work of:

About

Docker machine driver for the cloudscale.ch IaaS platform

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 60.1%
  • Shell 38.4%
  • Makefile 1.5%