Ruby Java C Shell Ragel Puppet Other
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
.bin Add AWS key detection hooks Feb 10, 2016
.hooks Add AWS key detection hooks Feb 10, 2016
application Do not update workflow on add-component Aug 20, 2018
async-examples Rubcop: Set of cops trigger based on previous regression test, meanin… Jul 10, 2015
dtk-modules Update to dtk-module directories and addition of aws/aws_vpc Jun 2, 2017
dtk-provisioning @ 3f4c927 Update dtk-provisioning May 23, 2018
lib Merge branch 'DTK-3552' Aug 2, 2018
nodes_info updated latest amazon hvm m4.large images Mar 2, 2016
repo_manager_client/lib Small fix for delete-from-catalog Feb 14, 2017
ruote_tests DTK-3309: Improve log messages Nov 28, 2017
server_side_files/etc/dtk Removal of mcollective code Jan 25, 2016
system Add license headers and Rake task Feb 5, 2016
utils Fixing issues with Retry and Sleep Jul 26, 2018
.gitignore DTK-2694: Added list-remotes command with -n flag Oct 7, 2016
.license_header Update copyright notice Nov 17, 2017
.rspec Fixed db cred May 27, 2013
.rubocop.yml Fix for bug DTK-1867 Jul 21, 2015
.rubocop_todo.yml Rubcop: Set of cops trigger based on previous regression test, meanin… Jul 10, 2015
Capfile Changed servers for testing Apr 16, 2014
Dockerfile DTK-2924: Optimize dtk-server image build Mar 9, 2017
Dockerfile.base DTK-2924: Optimize dtk-server image build Mar 9, 2017
Dockerfile.core update and change base docker image in Dockerfile.core Oct 15, 2015
Gemfile Add component and action specific filters to dtk service describe com… May 28, 2018
Gemfile.lock update of Gemfile.lock Jun 6, 2018
LICENSE Add manual instructions for dtk-arbiter Jun 1, 2018
Rakefile Add license headers and Rake task Feb 5, 2016 Update wait for dtk container May 18, 2018
dtk.config.example Update dtk.config.example Dec 23, 2016 Revert exit on first error May 18, 2018

Dtk Server

What it is?

Dtk Server is a Ruby based application that handles requests from Dtk Client and sends requests to Dtk Repoman. It manages tenant users, installed and imported component and servie modules, creates and converges service instances and performs all node orchestration.


Deploying Dtk Server with Docker

Fastest way to deploy Dtk Server is with a Docker container. Docker image getdtk/dtk-server contains all required services and components for deploying Dtk Server.


  • Install Docker

  • Select a directory on the host (host volume) which will be used by the Docker container for persistence (e.g. /usr/share/docker/dtk), and create dtk.config (e.g. /usr/share/docker/dtk/dtk.config) with following content:

PUBLIC_ADDRESS=<public address of the docker host>
## optionally set git user and email for script

More information about the dtk.config file can be found in dtk.config.example

Bootstrap Method

Run this command to spin up the latest release of Dtk Server, along with dtk-arbiter:

\curl -sSL | bash -s /usr/share/docker/dtk

The last argument should be the previously created host volume. Once the command completes successfully, Dtk Server should be listening on the default 8080 port.

Manual method

Starting the container

Start the Dtk Server docker container with the directory from above used as a volume. The docker container requires some ports to be forwared, for example: HTTP, ActiveMQ and SSH port. Example of starting a Docker container:

docker run --name dtk -v /usr/share/docker/dtk:/host_volume -p 8080:80 -p 6163:6163 -p 2222:22 -d getdtk/dtk-server

This will pull the latest available Dtk Server Docker image (getdtk/dtk-server).
Next step is to start the dtk-arbiter container:

docker run --name dtk-arbiter -v /usr/share/docker/dtk:/host_volume -v /var/run/docker.sock:/var/run/docker.sock -e HOST_VOLUME=/usr/share/docker/dtk $additional_args --restart=on-failure -td getdtk/dtk-arbiter

Example of starting a Dtk Server Docker container from a tagged Docker image.

docker run --name dtk -v /usr/share/docker/dtk:/host_volume -p 8080:80 -p 6163:6163 -p 2222:22 -d getdtk/dtk-server:v0.9.0

Connecting to Dtk Server Docker container

After the container is up and running (will take a minute on the first start), you can connect to it via dtk-client, by running the dtk command.

Installing Dtk Client

Bootstrap method

Run this command to automatically install and configure latest release of Dtk Client.

\curl -sSL | bash -s /usr/share/docker/dtk

To install a specific release (e.g. 0.11.8):

\curl -sSL | bash -s -- -v 0.11.8 /usr/share/docker/dtk

To install a specific release (e.g. 0.11.8):

\curl -sSL | bash -s -- -v 0.11.8 /usr/share/docker/dtk
Manual method

Assuming the docker container was started as described above, Dtk Client can be installed and configured automatically running the script:

./ [-u user] [-p port] configuration_path

configuration_path   - location of dtk.config file directory
user                 - user on which to install and configure dtk-client
                       defaults to new user named 'dtk-client
port                 - port where Dtk server is listening
                       defaults to 8080

In case the dtk-client gem is installed standalone without the script, in the Dtk Client prompt you can enter the values set in dtk.config (username, password and instance address).

Unless you have SSL, after the prompt, values for secure_connection and http_port in ~/dtk/client.conf should be changed to false and forwared http port values respectively.

Note that if you need to forward GIT SSH port to a different one, you can use the -e GIT_PORT=<desired_port>.

Upgrading the container

To upgrade Dtk container to a newer release, simply rerun the bootstrap script:

\curl -sSL | bash -s /usr/share/docker/dtk

To use the latest docker image which is built from master branch:

\curl -sSL | bash -s -- -v latest /usr/share/docker/dtk

To install a specific release (e.g. v0.11.11):

\curl -sSL | bash -s -- -v v0.11.11 /usr/share/docker/dtk


dtk-server is copyright (C) 2010-2016 dtk contributors

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with the License. You may obtain a copy of the License in the LICENSE file, or at:

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.