Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Directord

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

Task driven deployment, simplified, directed by you.

Directord is an asynchronous deployment and operations platform with the aim to better enable simplicity, faster time to delivery, and consistency.

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 : dicectord 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-prod-bootstrap-catalog.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

Metadata

Release files for directord 0.11.0a20211002034237

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for directord 0.11.0a20211002034237
File Size Uploaded Provenance Actions
directord-0.11.0a20211002034237.tar.gz 1.4 MB Without provenance Details for directord-0.11.0a20211002034237.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for directord 0.11.0a20211002034237
File Interpreter ABI Platform Actions
directord-0.11.0a20211002034237-py3-none-any.whl Python 3 none any Details for directord-0.11.0a20211002034237-py3-none-any.whl

Total release size: 2.9 MB

Release files / directord-0.11.0a20211002034237.tar.gz

Download URL directord-0.11.0a20211002034237.tar.gz
Size 1.4 MB
Tags Source
SHA-256 checksum
How to use checksums
f75e826cb61df701d267e5628563896d2e0cdf36253422c2938de94326c341b4
BLAKE2b-256 checksum
How to use checksums
17f04ce5076d5f39de34f6a404ca19e8202e687e765f7626d02d2182bc15e47f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

Release files / directord-0.11.0a20211002034237-py3-none-any.whl

Download URL directord-0.11.0a20211002034237-py3-none-any.whl
Size 1.5 MB
Tags Python 3
SHA-256 checksum
How to use checksums
a04b9b5e7f2ede132a3b9a5567341b7524f0352054f8cfe5c634d5a20e01dad1
BLAKE2b-256 checksum
How to use checksums
a907f57b66a8b76da16f1b208762151695614199891f77f7fb6c637b81ab50e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

Security for directord 0.11.0a20211002034237

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page