Skip to main content

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 cotea

Quick start

from cotea.runner import runner
from cotea.arguments_maker import argument_maker

inv_path = "/path/to/inventory"
playbook_path = "/path/to/playbook"

arg_maker = argument_maker()

# setting ansible-playbook flags
arg_maker.add_arg("-i", inv_path)
arg_maker.add_arg("-vvv")

# setting extra-vars
extra_vars = {"SPARK_VERSION": "3.0.2"}
arg_maker.add_arg("--extra-vars", extra_vars)

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. With the help of cotea one can do certain things dynamically at specific Ansible execution points.

Debugging

# imports and object creation...

while r.has_next_play():
    while r.has_next_task():
        task_results = r.run_next_task()
    
        some_task_failed = False
        failed_task = None

        already_ignore_failed = r.get_already_ignore_failed()
        already_ignore_unrch = r.get_already_ignore_unrch()

        for task in task_results:
            task_uuid = task.original_task_uuid
            
            # checking that task didn't have ignore_errors: true
            if task.is_failed:    
                if not task_uuid in already_ignore_failed:
                    some_task_failed = True
                    failed_task = task.task_ansible_object
                    break
            
            # checking that task didn't have ignore_unreachable: true
            if task.is_unreachable:    
                if not task_uuid in already_ignore_unrch:
                    some_task_failed = True
                    failed_task = task.task_ansible_object
                    break
        
        # the task was failed and didn't have
        # ignore_errors or ignore_unreachable flags -
        # going to interactive debugging mod
        if some_task_failed:
            interactive_discotech(failed_task, r)

        r.ignore_errors_of_next_task()


r.finish_ansible()

if r.was_error():
    print("Ansible error was:", r.get_error_msg())

Cotea also contains interactive debugging mode. Using the cotea one can detects that the task was failed in runtime (including the check that task didn't have ignore_errors or ignore_unreachable flag) and call the interactive_discotech() method in that case as shown above. Supported commands:

  • 'ft' - print info about the Failed Task
  • 'msg' - print all ansible error MSGs (including the ignored ones)
  • 'p' - print Progress bar
  • 'h'/'help' - print help message
  • 're' - RErun of the failed task
  • 'v' - add new Variable as extra var
  • 'c' - Continue ansible execution (go to the next task)
  • 'nt' - add New Task
  • 'w' - Watch ansible variable value

A detailed overview of all interfaces is provided in cotea documentation.

Project details


Download files

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

Source Distribution

cotea-1.3.20.tar.gz (19.7 kB view details)

Uploaded Source

Built Distribution

cotea-1.3.20-py3-none-any.whl (24.1 kB view details)

Uploaded Python 3

File details

Details for the file cotea-1.3.20.tar.gz.

File metadata

  • Download URL: cotea-1.3.20.tar.gz
  • Upload date:
  • Size: 19.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.31.0 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/24.3.1 rfc3986/2.0.0 colorama/0.4.3 CPython/3.8.10

File hashes

Hashes for cotea-1.3.20.tar.gz
Algorithm Hash digest
SHA256 7b446be14e63cbec605cbabf922c24b55d4bca6c7b78b9deadc81a3b50bb67f4
MD5 8078b660498614ea61d0327e86b3c4ea
BLAKE2b-256 b1d7e924e862881c8d551ad6fa6a6102b583c61dec4d97966ead5b08889d2dee

See more details on using hashes here.

File details

Details for the file cotea-1.3.20-py3-none-any.whl.

File metadata

  • Download URL: cotea-1.3.20-py3-none-any.whl
  • Upload date:
  • Size: 24.1 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.31.0 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/24.3.1 rfc3986/2.0.0 colorama/0.4.3 CPython/3.8.10

File hashes

Hashes for cotea-1.3.20-py3-none-any.whl
Algorithm Hash digest
SHA256 d941336c7f5727d6c9f356ae11bf62cbddf7a24c2f3062116ceed4bc68c17e3f
MD5 e5e721bfec56a8177ae0d79bd5b9a3ae
BLAKE2b-256 f7187e6ecaa2c134d09934cb43921489dd9e9ec831a39134df4de9c5214f4687

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