Skip to main content

A deployment framework built to manage the data center life cycle.

Project description

Directord

Directord is a powerful automation platform and protocol built to drive infrastructure and applications across the physical, edge, IoT, and cloud boundaries; efficient, pseudo-real-time, at scale, made simple.

Design Principles

The Directord design principles can be found here.

Documentation

Additional documentation covering everything from application design, wire diagrams, installation, usage, and more can all be found here.

Welcome Contributors

  • Read documentation on how best to deploy and leverage directord.

  • When ready, if you'd like to contribute to Directord pull-requests are very welcomed. Directord is an open platform built for operators. If you see something broken, please feel free to raise a but and/or fix it.

  • Information on running tests can be found here.

Have Questions?

Join us on libera.chat at #directord. The community is just getting started: folks are here to help, answer questions, and support one another.

Quick Introduction

This quick cast shows how easy it is to install, bootstrap, and deploy a scale test environment.

asciicast

Hello World

Let's create a virtual env on your local machine to bootstrap the installation, once installed you can move to the server node and call all your tasks from there

$ python3 -m venv --system-site-packages ~/directord
$ ~/directord/bin/pip install --upgrade pip setuptools wheel
$ ~/directord/bin/pip install directord

We need to create a catalog for bootstrapping. Let's assume we are installing directord in two machines:

  • directord-1 192.168.1.100 : directord server, a client

  • directord-2 192.168.1.101 : Only a client

For that we create a file

$ vi ~/directord-catalog.yaml

with the contents

directord_server:
  targets:
  - host: 192.168.1.100
  port: 22
  username: fedora

directord_clients:
  args:
    port: 22
    username: fedora
  targets:
  - host: 192.168.1.100
  - host: 192.168.1.101

We can now call directord to bootstrap the installation. Bootstrapping uses ssh to connect to the machines but after that ssh is no longer used. and you only need the ssh keys to connect your local machine to the machines you are installing into the server and client do not need shared keys between themselves.

To kickstart the bootstrapping you call directord with the catalog file you created and a catalog with the jobs required to bootstrap them.

$ ~/directord/bin/directord bootstrap \
                            --catalog ~/directord-catalog.yaml  \
                            --catalog ~/directord/share/directord/tools/directord-dev-bootstrap-zmq.yaml

Once that is ran you can now ssh to the server and issue all the commands from there

$ ssh fedora@192.168.1.100

First to make sure all the nodes are connected

$ sudo /opt/directord/bin/directord manage --list-nodes

Should show you

ID             EXPIRY  VERSION    HOST_UPTIME     AGENT_UPTIME
-----------  --------  ---------  --------------  --------------
directord-1    132.2   0.9.0      1:38:53.240000  0:00:00.051849
directord-2    131.69  0.9.0      1:39:25.780000  0:00:00.099533

Then we create our first orchestration job lets add a file called

$ vi helloworld.yaml

With the contents

- jobs:
  - ECHO: hello world

Then we call the orchestration to use it

$ sudo /opt/directord/bin/directord orchestrate helloworld.yaml

Should return something like:

Job received. Task ID: 9bcf31cb-7faf-4367-bf37-57c11b3f81dc

We use that task ID to probe how the job went or we can list all the jobs with"

$ sudo /opt/directord/bin/directord manage --list-jobs

That returns something like:

ID                                    PARENT_JOB_ID                           EXECUTION_TIME    SUCCESS    FAILED
------------------------------------  ------------------------------------  ----------------  ---------  --------
9bcf31cb-7faf-4367-bf37-57c11b3f81dc  9bcf31cb-7faf-4367-bf37-57c11b3f81dc              0.02          2         0

With the task id we can see how the job went:

$ sudo /opt/directord/bin/directord manage --job-info 9bcf31cb-7faf-4367-bf37-57c11b3f81dc

And voila here is our first orchestrated hello world:

KEY                   VALUE
--------------------  -------------------------------------------------------
ID                    9bcf31cb-7faf-4367-bf37-57c11b3f81dc
ACCEPTED              True
INFO                  test1 = hello world
                      test2 = hello world
STDOUT                test1 = hello world
                      test2 = hello world
...

License

Apache License Version 2.0 COPY

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

directord-0.11.3a20211201014207.tar.gz (106.6 kB view details)

Uploaded Source

Built Distribution

directord-0.11.3a20211201014207-py3-none-any.whl (171.9 kB view details)

Uploaded Python 3

File details

Details for the file directord-0.11.3a20211201014207.tar.gz.

File metadata

  • Download URL: directord-0.11.3a20211201014207.tar.gz
  • Upload date:
  • Size: 106.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for directord-0.11.3a20211201014207.tar.gz
Algorithm Hash digest
SHA256 9ef2e3c6a1115bed54a06b5a2e4d441824f5958405b86fa55e5b1510ad061a8a
MD5 eceb1668a3aed9af7962185c0aeb2901
BLAKE2b-256 979ea072b9e9c9e1788f80dc8fcd3139b1f16ca5b6b3e0c41ddd585eb87d782f

See more details on using hashes here.

File details

Details for the file directord-0.11.3a20211201014207-py3-none-any.whl.

File metadata

  • Download URL: directord-0.11.3a20211201014207-py3-none-any.whl
  • Upload date:
  • Size: 171.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for directord-0.11.3a20211201014207-py3-none-any.whl
Algorithm Hash digest
SHA256 16ff56c2d0bda4ec0b611b650783e44a4108efaace7cf54b782d548558fcbd65
MD5 3eb1f2c2e5716147eee1c48fb4e30b0b
BLAKE2b-256 1e31465c0f5b1c3f98b8fc5e998f413ee1f8c7583a8bebd7ced9cc8f503d9cf6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page