A desired state system for ansible
Project description
# Desired State Configuration
Desired state configuration allows users to focus on what they want instead of how to make it so. This simplifies automation for domain experts and allows automation experts to make generic operations that will work for many configurations.
# Getting Started
This repository uses [pipenv](https://pypi.org/project/pipenv/) to manage the dependencies. To install the dependencies for a development environment run the following commands:
pipenv install –dev
To load the shell for this environment run these commands:
pipenv shell
To install an example collection use this command:
ansible-galaxy collection install benthomasson.expect
To run the tests use this command after opening the shell:
pytest -v
# Code Organization
This project uses event driven programming using finite state machines to provide deterministic and correct behavior. This allows the project to react to external events easily.
The entry point for the CLI commands is located the [cli.py](desired_state/cli.py) file.
Message types between finite state machines are defined in [messages.py](desired_state/messages.py).
The reconciliation loop is defined as a finite state machine in [reconciliation_fsm.py](desired_state/reconciliation_fsm.py)
The main monitor process which contains the reconciliation loop is defined in [monitor.py](desired_state/monitor.py)
The generation of playbooks based on the differences between states is defined in [diff.py](desired_state/diff.py).
Selection of appropriate change rules based on state diff is defined in [rule.py](desired_state/rule.py)
A client/server implementation for injecting desired state into the monitor process is defined in the [client.py](desired_state/client.py) and [server.py](desired_state/server.py) files.
Collection support is defined in [collection.py](desired_state/collection.py).
Streaming telemetry is defined in [stream.py](desired_state/stream.py).
State schema validation is provided in [validate.py](desired_state/validate.py).
History
0.1.0 (2020-09-02)
First release on PyPI.
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
Built Distribution
File details
Details for the file desired_state-0.1.0.tar.gz
.
File metadata
- Download URL: desired_state-0.1.0.tar.gz
- Upload date:
- Size: 36.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.14.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c6d7075f9df6f29a89036ee1bfda0cde780ca1fa7865fb1db4da27bbfed3a4b8 |
|
MD5 | c2201ee69aa77e81a7e07c0efaff08ce |
|
BLAKE2b-256 | db7da308c2f6837c08972db53522b7dbfd4cb78c75326441b24dbaf78ee6ef83 |
File details
Details for the file desired_state-0.1.0-py2.py3-none-any.whl
.
File metadata
- Download URL: desired_state-0.1.0-py2.py3-none-any.whl
- Upload date:
- Size: 21.9 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.14.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4e08a548281abf8f4a750c32f6142f017e43198f55d0cb0a54c1d9f25d8c08ee |
|
MD5 | 8d9147897993d36b878bd58ac55d3c31 |
|
BLAKE2b-256 | 6ea13fde9bca694cdcd3c37184718fa0265aa9d5f1e4a100f842a86bf438226e |