Giter VIP home page Giter VIP logo

ansible-playbook-grapher's Introduction

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.8: The script has not been tested with an earlier version of Ansible, some features may not work. If you still use an older version of Ansible, create an virtual environment and install ansible-playbook-grapher. pip install will install a version of Ansible >= 2.8

  • 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.yml

Example

$ ansible-playbook-grapher --include-role-tasks  tests/fixtures/with_roles.yml

Example

Some options are available:

$ ansible-playbook-grapher --help
usage: ansible-playbook-grapher [-h] [-v] [-i INVENTORY]
                                [--include-role-tasks] [-s]
                                [-o OUTPUT_FILENAME] [--version] [-t TAGS]
                                [--skip-tags SKIP_TAGS] [--vault-id VAULT_IDS]
                                [--ask-vault-pass | --vault-password-file VAULT_PASSWORD_FILES]
                                [-e EXTRA_VARS]
                                playbook

Make graphs from your Ansible Playbooks.

positional arguments:
  playbook              Playbook to graph

optional arguments:
  --ask-vault-pass      ask for vault password
  --include-role-tasks  Include the tasks of the role in the graph.
  --skip-tags SKIP_TAGS
                        only run plays and tasks whose tags do not match these
                        values
  --vault-id VAULT_IDS  the vault identity to use
  --vault-password-file VAULT_PASSWORD_FILES
                        vault password file
  --version             show program's version number and exit
  -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
  -i INVENTORY, --inventory INVENTORY
                        specify inventory host path or comma separated host
                        list.
  -o OUTPUT_FILENAME, --ouput-file-name OUTPUT_FILENAME
                        Output filename without the '.svg' extension. Default:
                        <playbook>.svg
  -s, --save-dot-file   Save the dot file used to generate the graph.
  -t TAGS, --tags TAGS  only run plays and tasks tagged with these values
  -v, --verbose         verbose mode (-vvv for more, -vvvv to enable
                        connection debugging)

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
  • (cd tests && pip install -r requirements_tests.txt)

Run the tests with:

$ make test # run all tests

The graphs are generated in the folder tests/generated_svg.

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

ansible-playbook-grapher's People

Contributors

dependabot-preview[bot] avatar haidaram avatar nvtkaszpir avatar petermosmans avatar ros0x5ft avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.