Tool that provides Python API to run Ansible programmatically.
Project description
cotea
(COntrol Thread Execution Ansible)
cotea is:
Tool that provides Python API to run Ansible programmatically.
cotea allows:
- To control Ansible execution by iterating over the Ansible plays and tasks
- To embed Ansible into another system
- To debug Ansible execution by getting the values of Ansible variables and by retrieving the results of the execution of Ansible tasks/plays
Installation
pip install -i https://test.pypi.org/simple/ cotea==1.3.2
Tested on Ansible 2.9.4, 2.12.2, 2.12.4 in ubuntu 20.04.
Quick start
from cotea.runner import runner
from cotea.arguments_maker import argument_maker
inv_path = "/path/to/inventory"
playbook_path = "/path/to/playbook"
am = argument_maker()
am.add_arg("-i", inv_path)
r = runner(playbook_path, am)
while r.has_next_play():
current_play = r.get_cur_play_name()
print("PLAY:", current_play)
while r.has_next_task():
next_task = r.get_next_task_name()
print("\tTASK:", next_task)
r.run_next_task()
r.finish_ansible()
Any argument of the "ansible-playbook" command can be passed by using argument_maker objects. The launch and control of the Ansible is carried out using the runner object.
Debugging
# imports and object creation...
specific_play = "s_play"
specific_task = "s_task"
s_var_name = "s_var"
while r.has_next_play():
current_play = r.get_cur_play_name()
while r.has_next_task():
next_task = r.get_next_task_name()
if current_play == specific_play and next_task == specific_task:
# getting variable at specific execution point
s_var_value = r.get_variable(s_var_name)
r.run_next_task()
r.finish_ansible()
if r.was_error():
print("Ansible error was:", r.get_error_msg())
With the help of cotea one can do certain things dynamically at specific Ansible execution points. Getting the value of a specific variable at a specific execution point is shown above (the point is determined by a pair of Ansible play and task). If ansible exits with an error one can get the error message programmatically without processing a huge log file.
A detailed overview of all interfaces is provided in cotea documentation.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cotea-1.3.10.tar.gz.
File metadata
- Download URL: cotea-1.3.10.tar.gz
- Upload date:
- Size: 17.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.22.0 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/18.0.1 rfc3986/2.0.0 colorama/0.4.3 CPython/3.8.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a17ef7e49f34d8b10751e8d98972b71dbacef1d0e41dceeddd433488099db2e3
|
|
| MD5 |
c3e2fcf55d2d94e8e1af43e241fcf702
|
|
| BLAKE2b-256 |
42231d6403ced24ef850d29eee30f86faae723cbf946dd22ef540cb5cc14c8cc
|
File details
Details for the file cotea-1.3.10-py3-none-any.whl.
File metadata
- Download URL: cotea-1.3.10-py3-none-any.whl
- Upload date:
- Size: 21.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.22.0 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/18.0.1 rfc3986/2.0.0 colorama/0.4.3 CPython/3.8.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f0b42f1d4b751d96dc56149c3d92ff5b430a3ece422336c844a22291dae2e09
|
|
| MD5 |
8e8ead56f3212d32f291f5177f718410
|
|
| BLAKE2b-256 |
f66301e7fb7c7fad13ec463cd5c909e2861a33a602343b47db65779a8407131f
|