mirror of
https://github.com/thegeeklab/ansible-doctor.git
synced 2024-11-22 04:40:43 +00:00
add basic readme
This commit is contained in:
parent
0a3e74bdd6
commit
b48ea2fce0
185
README.md
185
README.md
@ -3,3 +3,188 @@
|
|||||||
[![Build Status](https://cloud.drone.io/api/badges/xoxys/ansible-doctor/status.svg)](https://cloud.drone.io/xoxys/ansible-doctor)
|
[![Build Status](https://cloud.drone.io/api/badges/xoxys/ansible-doctor/status.svg)](https://cloud.drone.io/xoxys/ansible-doctor)
|
||||||
[![](https://images.microbadger.com/badges/image/xoxys/ansible-doctor.svg)](https://microbadger.com/images/xoxys/ansible-doctor "Get your own image badge on microbadger.com")
|
[![](https://images.microbadger.com/badges/image/xoxys/ansible-doctor.svg)](https://microbadger.com/images/xoxys/ansible-doctor "Get your own image badge on microbadger.com")
|
||||||
![License](https://img.shields.io/github/license/xoxys/ansible-doctor)
|
![License](https://img.shields.io/github/license/xoxys/ansible-doctor)
|
||||||
|
|
||||||
|
This project is based on the idea (and at some parts on the code) of [ansible-autodoc](https://github.com/AndresBott/ansible-autodoc) by Andres Bott so credits goes to him for his work.
|
||||||
|
|
||||||
|
`ansible-doctor` is a simple annotation like documentation generator based on Jinja2 templates. While `ansible-doctor` comes with a default template called `readme`, it is also possible to write your own templates. This gives you the ability to customize the output and render the data to every format you like (e.g. html or xml).
|
||||||
|
|
||||||
|
`ansible-doctor` is designed to work within your CI pipeline to complete your testing and deployment workflow. Releases are available as Python Packages on [GitHub](https://github.com/xoxys/ansible-doctor/releases) or [PyPI](https://pypi.org/project/ansible-doctor/) and as Docker Image on [DockerHub](https://hub.docker.com/r/xoxys/ansible-doctor).
|
||||||
|
|
||||||
|
## Table of Content
|
||||||
|
|
||||||
|
* [Setup](#Setup)
|
||||||
|
* [Using pip](#Using-pip)
|
||||||
|
* [Using docker](#Using-docker)
|
||||||
|
* [Configuration](#Configuration)
|
||||||
|
* [Default settings](#Default-settings)
|
||||||
|
* [CLI options](#CLI-options)
|
||||||
|
* [Environment variables](#Environment-variables)
|
||||||
|
* [Usage](#Usage)
|
||||||
|
* [License](#License)
|
||||||
|
* [Maintainers and Contributors](#Maintainers-and-Contributors)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Setup
|
||||||
|
|
||||||
|
#### Using pip
|
||||||
|
|
||||||
|
```Shell
|
||||||
|
# From PyPI as unprivilegd user
|
||||||
|
$ pip install ansible-doctor --user
|
||||||
|
|
||||||
|
# .. or as root
|
||||||
|
$ sudo pip install ansible-doctor
|
||||||
|
|
||||||
|
# From Wheel file
|
||||||
|
$ pip install https://github.com/xoxys/ansible-doctor/releases/download/v0.1.1/ansible_doctor-0.1.1-py2.py3-none-any.whl
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Using docker
|
||||||
|
|
||||||
|
```Shell
|
||||||
|
docker run \
|
||||||
|
-e ANSIBLE_DOCTOR_ROLE_DIR=example/demo-role/ \
|
||||||
|
-e ANSIBLE_DOCTOR_OUTPUT_DIR=example/ \
|
||||||
|
-e ANSIBLE_DOCTOR_FORCE_OVERWRITE=true \
|
||||||
|
-e ANSIBLE_DOCTOR_CUSTOM_HEADER=example/demo-role/HEADER.md \
|
||||||
|
-e ANSIBLE_DOCTOR_LOG_LEVEL=info \
|
||||||
|
-e PY_COLORS=1 \
|
||||||
|
-v $(pwd):/doctor \
|
||||||
|
-w /doctor \
|
||||||
|
xoxys/ansible-doctor
|
||||||
|
```
|
||||||
|
|
||||||
|
Keep in mind, that you have to pass selinux labels (:Z or :z) to your mount option if you are working on a selinux enabled system.
|
||||||
|
|
||||||
|
### Configuration
|
||||||
|
|
||||||
|
`ansible-doctor` comes with default settings which should be sufficient for most users to start, but you can adjust most settings to your needs.
|
||||||
|
|
||||||
|
Changes can be made on different locations which will be processed in the following order (last wins):
|
||||||
|
|
||||||
|
* default config (build-in)
|
||||||
|
* global config file (path depends on your operating system)
|
||||||
|
* folder-based config file (.ansibledoctor.yml|.ansibledoctor.yaml|.ansibledoctor in current working dir)
|
||||||
|
* environment variables
|
||||||
|
* cli options
|
||||||
|
|
||||||
|
#### Default settings
|
||||||
|
|
||||||
|
```YAML
|
||||||
|
---
|
||||||
|
# default is your current working dir
|
||||||
|
role_dir:
|
||||||
|
# don't write anything to filesystem
|
||||||
|
dry_run: False
|
||||||
|
|
||||||
|
logging:
|
||||||
|
# possible options debug | info | warning | error | critical
|
||||||
|
level: "warning"
|
||||||
|
# you can enable json logging if a parsable output is required
|
||||||
|
json: False
|
||||||
|
|
||||||
|
# path to write rendered template file
|
||||||
|
# default is your current working dir
|
||||||
|
output_dir:
|
||||||
|
# default is in-build templates dir
|
||||||
|
template_dir:
|
||||||
|
template: readme
|
||||||
|
|
||||||
|
# don't ask to overwrite if output file exists
|
||||||
|
force_overwrite: False
|
||||||
|
# load custom header from given file and append template output
|
||||||
|
# to it before write.
|
||||||
|
custom_header: ""
|
||||||
|
|
||||||
|
exclude_files: []
|
||||||
|
# Examples
|
||||||
|
# exclude_files:
|
||||||
|
# - molecule/
|
||||||
|
# - files/**/*.py
|
||||||
|
```
|
||||||
|
|
||||||
|
#### CLI options
|
||||||
|
|
||||||
|
```Shell
|
||||||
|
$ ansible-doctor --help
|
||||||
|
usage: ansible-doctor [-h] [-c CONFIG_FILE] [-o OUTPUT_DIR] [-f] [-d] [-v]
|
||||||
|
[-q] [--version]
|
||||||
|
role_dir
|
||||||
|
|
||||||
|
Generate documentation from annotated Ansible roles using templates
|
||||||
|
|
||||||
|
positional arguments:
|
||||||
|
role_dir role directory (default: current working dir)
|
||||||
|
|
||||||
|
optional arguments:
|
||||||
|
-h, --help show this help message and exit
|
||||||
|
-c CONFIG_FILE, --config CONFIG_FILE
|
||||||
|
location of configuration file
|
||||||
|
-o OUTPUT_DIR, --output OUTPUT_DIR
|
||||||
|
output base dir
|
||||||
|
-f, --force force overwrite output file
|
||||||
|
-d, --dry-run dry run without writing
|
||||||
|
-v increase log level
|
||||||
|
-q decrease log level
|
||||||
|
--version show program's version number and exit
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Environment variables
|
||||||
|
|
||||||
|
```Shell
|
||||||
|
CONFIG_FILE=
|
||||||
|
ROLE_DIR=
|
||||||
|
DRY_RUN=false
|
||||||
|
LOG_LEVEL=warning
|
||||||
|
LOG_JSON=false
|
||||||
|
OUTPUT_DIR=
|
||||||
|
TEMPLATE_DIR=
|
||||||
|
TEMPLATE=readme
|
||||||
|
FORCE_OVERWRITE=false
|
||||||
|
CUSTOM_HEADER=
|
||||||
|
EXCLUDE_FILES=
|
||||||
|
# EXCLUDE_FILES=molecule/,files/**/*.py
|
||||||
|
```
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
|
```Shell
|
||||||
|
ansible-doctor FOLDER
|
||||||
|
```
|
||||||
|
|
||||||
|
If you don't pass a folder to `ansible-doctor` your current working directory will be used. The first step is to identify if the given folder is an ansible role. This check is very simple, if the folder contains a subfolder called `tasks` is MUST be an ansible role! :)
|
||||||
|
|
||||||
|
After the successful check, `ansible-doctor` will try to read some static files into a dictionary:
|
||||||
|
|
||||||
|
* defaults/main.yml
|
||||||
|
* meta/main.yml
|
||||||
|
|
||||||
|
This will be the base result set which is used as data source for every output template. Without any work, you will get at least a documentation about available variables and some meta information. Theses basic information can be expanded with a set of available annotations. In general, an annotation is a comment with an identifier. This identifier is followed by colon separated options and ends with a value.
|
||||||
|
|
||||||
|
```Yaml
|
||||||
|
# @identifier option1:option2: <value>
|
||||||
|
|
||||||
|
# @var docker_registry_password:example: "%8gv_5GA?"
|
||||||
|
# @var docker_registry_password:description: Very secure password to login to the docker registry
|
||||||
|
# @var docker_registry_password:description: >
|
||||||
|
# You can also write it as multiline description
|
||||||
|
# Very secure password to login to the docker registry.
|
||||||
|
# @end
|
||||||
|
docker_registry_password: "secret"
|
||||||
|
```
|
||||||
|
|
||||||
|
These list of pre-defined identifiers is currently available:
|
||||||
|
|
||||||
|
* @meta
|
||||||
|
* @todo
|
||||||
|
* @var
|
||||||
|
* @tag
|
||||||
|
|
||||||
|
### License
|
||||||
|
|
||||||
|
This project is licensed under the GNU v3.0 - see the [LICENSE](https://github.com/xoxys/ansible-doctor/blob/master/LICENSE) file for details.
|
||||||
|
|
||||||
|
### Maintainers and Contributors
|
||||||
|
|
||||||
|
[Robert Kaussow](https://github.com/xoxys)
|
||||||
|
@ -35,13 +35,13 @@ class AnsibleDoctor:
|
|||||||
# TODO: add function to print to stdout instead of file
|
# TODO: add function to print to stdout instead of file
|
||||||
parser = argparse.ArgumentParser(
|
parser = argparse.ArgumentParser(
|
||||||
description="Generate documentation from annotated Ansible roles using templates")
|
description="Generate documentation from annotated Ansible roles using templates")
|
||||||
parser.add_argument("role_dir", nargs="?", help="role directory, (default: current working dir)")
|
parser.add_argument("role_dir", help="role directory (default: current working dir)")
|
||||||
parser.add_argument("-c", "--config", nargs="?", dest="config_file", help="location of configuration file")
|
parser.add_argument("-c", "--config", dest="config_file", help="location of configuration file")
|
||||||
parser.add_argument("-o", "--output", action="store", dest="output_dir", type=str,
|
parser.add_argument("-o", "--output", dest="output_dir", action="store",
|
||||||
help="output base dir")
|
help="output base dir")
|
||||||
parser.add_argument("-f", "--force", action="store_true", default=None, dest="force_overwrite",
|
parser.add_argument("-f", "--force", dest="force_overwrite", action="store_true", default=None,
|
||||||
help="force overwrite output file")
|
help="force overwrite output file")
|
||||||
parser.add_argument("-d", "--dry-run", action="store_true", default=None, dest="dry_run",
|
parser.add_argument("-d", "--dry-run", dest="dry_run", action="store_true", default=None,
|
||||||
help="dry run without writing")
|
help="dry run without writing")
|
||||||
parser.add_argument("-v", dest="logging.level", action="append_const", const=-1,
|
parser.add_argument("-v", dest="logging.level", action="append_const", const=-1,
|
||||||
help="increase log level")
|
help="increase log level")
|
||||||
|
Loading…
Reference in New Issue
Block a user