Skip to main content

Document generator for ansible role/collection

Project description

Docsible

About

Docsible is a command-line interface (CLI) written in Python that automates the documentation of Ansible roles and collections. It generates a Markdown-formatted README file for role or collection by scanning the Ansible YAML files.

Table of Contents

Features

  • Generates a README in Markdown format
  • Scans and includes default variables and role-specific variables
  • Parses tasks, including special Ansible task types like 'block' and 'rescue'
  • Optionally includes playbook content in the README
  • CLI-based, easy to integrate into a CI/CD pipeline
  • Provides a templating feature to customize output
  • Supports multiple YAML files within tasks, defaults, vars directory
  • Includes meta-data like author and license from meta/main.[yml/yaml]
  • Generates a well-structured table for default and role-specific variables
  • Support for encrypted Ansible Vault variables

Installation

How to create virtual env with python3

python3 -m venv docsible
source docsible/bin/activate

To install Docsible, you can run:

pip install docsible

Usage

To use Docsible, you can run the following command in your terminal:

Specific path

docsible --role /path/to/ansible/role --playbook /path/to/playbook.yml --graph

Document collection

docsible --collection ./collections_tests/lucian/ --no-backup --graph

Only role without playbook

docsible --role /path/to/ansible/role # without include a playbook into readme
$ docsible --help
Usage: docsible [OPTIONS]

Options:
  --role TEXT      Path to the Ansible role directory.
  --collection TEXT Path to the Ansible collection directory.
  --playbook TEXT  Path to the playbook file.
  --graph          Generate Mermaid graph for tasks.
  --no-backup      Do not backup the readme before remove.
  --no-docsible    Do not create .docsible file and do not print relative variable to generated README.md.
  --comments       Read comments from tasks files.
  --md-template    Path to the markdown template file.
  --append         Append to the existing README.md instead of replacing it.
  --version        Show the module version.
  --help           Show this message and exit.

Flags

  • --role: Specifies the directory path to the Ansible role.
  • --collection: Specifies the directory path to the Ansible collection.
  • --playbook: Specifies the path to the Ansible playbook (Optional). ( Works only with roles )
  • --graph: Generate mermaid for role and playbook.
  • --no-backup: Ignore existent README.md and remove before generate a new one. (Optional).
  • --comments: Read comments from tasks files. (Optional).
  • --md-template: Specifies the path to the markdown template file (Optional). ( Works only with roles )
  • --append: Append existing readme.md if needed

Data Sources

Docsible fetches information from the following files within the specified Ansible role:

  • defaults/*.yml/yaml: For default variables
  • vars/*.yml/yaml: For role-specific variables
  • meta/main.yml/yaml: For role metadata
  • tasks/*.yml/yaml: For tasks, including special task types and subfolders

Examples

Demo1 coffeemaker_midday role

Demo2 coffeemaker_morning role

Prerequisites

Docsible works with Python 3.x and requires the following libraries:

  • Click
  • Jinja2
  • PyYAML

TODO

  • Clean the code
  • Add more features
  • Custom templates for collection
  • Multiple playbooks handle into mermaid for collection and role

About comments

This tool work whith several type of comments.

On variables and defaults

The tool read comments placed before a variable, only if it begin with specific tag:

# title: This tag will be used for popiulate the column Title of the README.md. It is a short description of the variable

# required: This tag will be used for popiulate the column Required of the README.md

# choices: This optional tag will be used for popiulate the column Choices of the README.md

On tasks

The tool will read all the line before each - name: of the tasks that begin with #. All comment will be reported to the column Comments of the tasks tables.

Contributing

For details on how to contribute, please read the Contributing Guidelines.

License

This project is licensed under the MIT License. See the LICENSE file for more details.

Author

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

docsible-0.7.5.tar.gz (15.8 kB view details)

Uploaded Source

Built Distribution

docsible-0.7.5-py3-none-any.whl (16.2 kB view details)

Uploaded Python 3

File details

Details for the file docsible-0.7.5.tar.gz.

File metadata

  • Download URL: docsible-0.7.5.tar.gz
  • Upload date:
  • Size: 15.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.12.3 Linux/6.5.0-45-generic

File hashes

Hashes for docsible-0.7.5.tar.gz
Algorithm Hash digest
SHA256 eb64ce0c5f59ad99e113857f7a1cb690e56682fc5988d428e505a72bec6ac0e5
MD5 40de1fcc0a2893a66ba2135244ab79f6
BLAKE2b-256 47c3351a707ae1edb268022ed58cd7c796455a7a6fb80c2799b46c86db85c8ab

See more details on using hashes here.

File details

Details for the file docsible-0.7.5-py3-none-any.whl.

File metadata

  • Download URL: docsible-0.7.5-py3-none-any.whl
  • Upload date:
  • Size: 16.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.12.3 Linux/6.5.0-45-generic

File hashes

Hashes for docsible-0.7.5-py3-none-any.whl
Algorithm Hash digest
SHA256 5548db577544a809ad8b2ccd930169634200227c98a6dc3a135e995c3fd90d24
MD5 4858ed8da4e978a9fca683d5aec75c4b
BLAKE2b-256 09adc9db51f8bd4fbdcb318ef086c0a979d88c3091b94a5009848143ce0855e8

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