DC/OS Command Line Interface
The DC/OS Command Line Interface (CLI) is a cross-platform command line utility that provides a user-friendly yet powerful way to manage DC/OS clusters.
Installation and Usage
If you're a user of DC/OS, please follow the installation instructions. Otherwise, follow the instructions below to set up your development environment.
Detailed help and usage information is available through the dcos help
command and for specific subcommands through dcos <subcommand> --help
.
Additional documentation for the CLI and for the DC/OS in general is available in the Mesosphere docs.
Parsing CLI Output
The CLI outputs either whitespace delimited tables which can be processed by
all of your favourite Unix/Linux tools like sed, awk and grep, or text formatted
as JSON when using the --json
flag.
If using JSON, you can combine it with the powerful jq utility. The example below installs every package available in the DC/OS repository:
dcos package search --json | jq '.[0].packages[].name' | xargs -L 1 dcos package install --yes
Development Dependencies
- git must be installed to download the source code for the DC/OS CLI.
- python version 3.4.x must be installed.
- virtualenv must be installed and on the system path in order to install legacy subcommands. New subcommands are packaged as platform specific executable or platform specific Zip archives.
- win_bash must be installed if you are running this in Windows in order to run setup scripts from the Makefiles.
Setup
Make sure you meet requirements for installing packages
Clone git repo for the dcos cli:
git clone git@github.com:dcos/dcos-cli.git
Change directory to the repo directory:
cd dcos-cli
Create a python virtual env for the dcos project:
make env
Create a virtualenv for the dcoscli project:
cd cli make env
Configure Environment and Run
source
the setup file to add thedcos
command line interface to yourPATH
and create an empty configuration file:source bin/env-setup-dev
Configure the CLI, changing the values below as appropriate for your local installation of DC/OS:
dcos config set core.dcos_url http://dcos-ea-1234.us-west-2.elb.amazonaws.com
Get started by calling the DC/OS CLI help:
dcos help
Running Tests
Setup
Tox, our test runner, tests against Python 3.4. We have a set of tests in
the dcos
package (root directory) and in the dcoscli
package
(cli
directory). When running the tests describe below change
directory to one of those two and follow the instructions.
Initialization
The config integration tests use static config files. To run these tests make sure you set owner only permissions on these files:
chmod 600 cli/tests/data/dcos.toml
chmod 600 cli/tests/data/config/parse_error.toml
The node
integration tests use CLI_TEST_SSH_KEY_PATH
for ssh
credentials to your cluster.
The ssl
integration tests resolve dcos.snakeoil.mesosphere.com
to test SSL certs. To run this test suite be sure to add this resolution to your
/etc/hosts
file:
echo "dcos/cluster/url dcos.snakeoil.mesosphere.com" >> /etc/hosts
Running
Tox will run unit and integration tests in Python 3.4 using a temporarily created virtualenv.
You can set DCOS_CONFIG
to a config file that points to a DC/OS
cluster you want to use for integration tests. This defaults to
~/.dcos/dcos.toml
There are two ways to run tests, you can either use the virtualenv created by
make env
above:
make test
Or, assuming you have tox installed (via sudo pip install tox
):
tox
Other Useful Commands
List all of the supported test environments:
tox --listenvs
Run a specific set of tests:
tox -e <testenv>
Run a specific integration test module:
tox -e py34-integration /test_config.py
Releasing
Releasing a new version of the DC/OS CLI is only possible through an automated TeamCity build which is triggered automatically when a new tag is added.
The tag is used as the version number and must adhere to the conventional PEP-440 version scheme.
The automated build starts up three jobs to build the platform dependent executables (in Windows, OS X, and Linux).
The executables are pushed to s3 and available at https://downloads.dcos.io/binaries/cli/<platform>/x86-64/<tag>/dcos. The links to each of the platform executables and the release notes are published at: https://github.com/dcos/dcos-cli/releases/tag/<tag>
The automated build also publishes two packages to PyPI using the publish_to_pypi.sh script:
These packages are available to be installed by the DC/OS CLI installation script in the mesosphere/install-scripts repository.