DC/OS E2E

DC/OS E2E is a tool for spinning up and managing DC/OS clusters in test environments.

Installation

DC/OS E2E consists of a Python Library and a dcos-docker CLI.

The CLI works only with the Docker Backend, while the library supports multiple Backends. The CLI can be installed with Homebrew on macOS, and the library and CLI can be installed together with pip on any Linux and macOS.

Windows is not currently supported, but we provide instructions on using DC/OS E2E on Windows with Vagrant on particular Backends’ documentation.

CLI macOS With Homebrew

To install the CLI on macOS, install Homebrew.

Then install the latest stable version:

brew install https://raw.githubusercontent.com/mesosphere/dcos-e2e/master/dcosdocker.rb

To upgrade to a newer version, run the following command:

brew upgrade https://raw.githubusercontent.com/mesosphere/dcos-e2e/master/dcosdocker.rb

Or the latest master:

Homebrew installs the dependencies for the latest released version and so installing master may not work.

brew install --HEAD https://raw.githubusercontent.com/mesosphere/dcos-e2e/master/dcosdocker.rb

Library and CLI with Python

Requires Python 3.5.2+.

Optionally replace master with a particular version of DC/OS E2E. The latest release is 2018.04.11.0. See available versions.

pip install git+https://github.com/mesosphere/dcos-e2e.git@master

Getting Started with the Library

To create a DC/OS Cluster, you need a backend. Backends are customizable, but for now let’s use a standard Docker backend. Each backend has different system requirements. See the Docker backend documentation for details of what is needed for the Docker backend.

from dcos_e2e.backends import Docker
from dcos_e2e.cluster import Cluster

cluster = Cluster(cluster_backend=Docker())

It is also possible to use Cluster as a context manager. Doing this means that the cluster is destroyed on exit.

To install DC/OS on a cluster, you need a DC/OS build artifact. You can download one from the DC/OS releases page. In this example we will use a open source DC/OS artifact downloaded to /tmp/dcos_generate_config.sh.

from pathlib import Path

oss_artifact = Path('/tmp/dcos_generate_config.sh')

cluster.install_dcos_from_path(
    build_artifact=oss_artifact,
    extra_config={
         'resolvers': ['8.8.8.8'],
    }
)

cluster.wait_for_dcos_oss()

With a Cluster you can then run commands on arbitrary Nodes.

for master in cluster.masters:
    result = master.run(args=['echo', '1'])
    print(result.stdout)

There is much more that you can do with Clusters and Nodes, and there are other ways to create a cluster.

CLI

DC/OS E2E also provides a command line interface for the Docker backend. It allows you to create, manage and destroy DC/OS clusters. See dcos-docker CLI for details.