No description
Find a file
2019-02-24 22:25:32 +01:00
ansibleplaybookgrapher Add some type hints as docstring 2019-02-24 22:25:32 +01:00
tests fix: main should not return anything, update tests 2019-02-19 00:28:51 +01:00
.gitignore initial commit 2017-10-25 12:14:33 +02:00
.travis.yml travis: remove apt-get install python-setuptools and merge pip options 2019-02-24 17:20:02 +01:00
CHANGELOG.md bump version: 0.8.3 2019-02-19 00:45:59 +01:00
LICENSE add license 2017-11-06 13:43:31 +01:00
Makefile Replace python3 by python in the Makefile 2019-02-24 17:12:09 +01:00
MANIFEST.in fix bug where the data files are not included in the package 2017-11-08 17:49:18 +01:00
pytest.ini Coverage (#10) 2017-11-21 14:43:36 +01:00
Readme.md Fix images path in readme.md 2019-02-18 23:29:19 +01:00
requirements.txt Drop pandoc: pypi supports description in markdown 2019-02-18 22:20:57 +01:00
requirements_tests.txt setup.py: read requirements from files, install coveralls in travis 2019-02-18 22:53:02 +01:00
setup.cfg Add ability to run the tests with "python setup.py test" 2019-02-18 22:21:13 +01:00
setup.py setup.py: read requirements from files, install coveralls in travis 2019-02-18 22:53:02 +01:00
test_install.sh fix: main should not return anything, update tests 2019-02-19 00:28:51 +01:00

Ansible Playbook Grapher

Build Status PyPI version Coverage Status

ansible-playbook-grapher is a command line tool to create a graph representing your Ansible playbook tasks and roles. The aim of this project is to quickly have an overview of your playbook.

Inspired by Ansible Inventory Grapher.

Prerequisites

  • Ansible >= 2.4: The script has not been tested with an earlier version of Ansible. If you still use an older version of Ansible, create an virtual environment and install ansible-playbook-grapher. The installation process will install a version of Ansible >= 2.4

  • graphviz: The tool used to generate the graph in SVG.

$ sudo apt-get install graphviz # or yum install or brew install

Installation

$ pip install ansible-playbook-grapher

Usage

$ ansible-playbook-grapher tests/fixtures/example.png

Example

$ ansible-playbook-grapher --include-role-tasks  examples/example_with_roles.yml

Example

Some options are available:

$ ansible-playbook-grapher --help
Usage: ansible-playbook-grapher [options] playbook.yml

Make graph from your Playbook.

Options:
  --ask-vault-pass      ask for vault password
  -e EXTRA_VARS, --extra-vars=EXTRA_VARS
                        set additional variables as key=value or YAML/JSON, if
                        filename prepend with @
  -h, --help            show this help message and exit
  --include-role-tasks  Include the tasks of the role in the graph.
  -i INVENTORY, --inventory=INVENTORY
                        specify inventory host path (default=[%s]) or comma
                        separated host list.
  --new-vault-id=NEW_VAULT_ID
                        the new vault identity to use for rekey
  --new-vault-password-file=NEW_VAULT_PASSWORD_FILES
                        new vault password file for rekey
  -o OUTPUT_FILE_NAME, --ouput-file-name=OUTPUT_FILE_NAME
                        Output filename without the '.svg' extension. Default:
                        <playbook>.svg
  -s, --save-dot-file   Save the dot file used to generate the graph.
  --skip-tags=SKIP_TAGS
                        only run plays and tasks whose tags do not match these
                        values
  -t TAGS, --tags=TAGS  only run plays and tasks tagged with these values
  --vault-id=VAULT_IDS  the vault identity to use
  --vault-password-file=VAULT_PASSWORD_FILES
                        vault password file
  -v, --verbose         verbose mode (-vvv for more, -vvvv to enable
                        connection debugging)
  --version             show program's version number and exit

Contribution

Contributions are welcome. Feel free to contribute by creating an issue or submitting a PR 😃

Dev environment

To setup a new development environment:

  • Install graphviz sudo apt-get install graphviz # or yum install or brew install graphviz
  • pip install -r requirements.txt

Run the tests with:

$ make test

TODO

  • Graphviz : properly rank the edge of the graph to represent the order of the execution of the tasks and roles
  • Graphviz : find a way to avoid or reduce edges overlapping
  • Refactor the graph representation