373b1dcf59
* Docs refactor as outlined in https://github.com/ansible/proposals/issues/79. Moves content into 'guides'; refactors TOC; fixes CSS; design tweaks to layout and CSS; fixes generated plugin, CLI and module docs to fix links accodingly; more. * Adding extra blank line for shippable
323 lines
11 KiB
Django/Jinja
323 lines
11 KiB
Django/Jinja
.. _@{ module }@:
|
|
|
|
{% if short_description %}
|
|
{% set title = module + ' - ' + short_description|convert_symbols_to_format %}
|
|
{% else %}
|
|
{% set title = module %}
|
|
{% endif %}
|
|
{% set title_len = title|length %}
|
|
|
|
@{ title }@
|
|
@{ '+' * title_len }@
|
|
|
|
{% if version_added is defined and version_added != '' -%}
|
|
.. versionadded:: @{ version_added | default('') }@
|
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
.. contents::
|
|
:local:
|
|
:depth: 2
|
|
|
|
{# ------------------------------------------
|
|
#
|
|
# Please note: this looks like a core dump
|
|
# but it isn't one.
|
|
#
|
|
--------------------------------------------#}
|
|
{% if deprecated is defined -%}
|
|
|
|
|
|
DEPRECATED
|
|
----------
|
|
|
|
{# use unknown here? skip the fields? #}
|
|
:Removed in Ansible: version: @{ deprecated['removed_in'] | default('') | string | convert_symbols_to_format }@
|
|
:Why: @{ deprecated['why'] | default('') | convert_symbols_to_format }@
|
|
:Alternative: @{ deprecated['alternative'] | default('')| convert_symbols_to_format }@
|
|
|
|
|
|
{% endif %}
|
|
|
|
Synopsis
|
|
--------
|
|
|
|
{% if description %}
|
|
|
|
{% if description is string -%}
|
|
* @{ description | convert_symbols_to_format }@
|
|
{% else %}
|
|
{% for desc in description -%}
|
|
* @{ desc | convert_symbols_to_format }@
|
|
{% endfor %}
|
|
{% endif %}
|
|
|
|
{% endif %}
|
|
|
|
{% if aliases is defined -%}
|
|
|
|
Aliases: @{ ','.join(aliases) }@
|
|
|
|
|
|
{% endif %}
|
|
|
|
{% if requirements %}
|
|
{% set req = 'Requirements' %}
|
|
{% if plugin_type == 'module' %}
|
|
{% set req = req + ' (on host that executes module)' %}
|
|
{% endif %}
|
|
{% set req_len = req|length %}
|
|
@{ req }@
|
|
@{ '-' * req_len }@
|
|
|
|
{% for req in requirements %}
|
|
* @{ req | convert_symbols_to_format }@
|
|
{% endfor %}
|
|
|
|
{% endif %}
|
|
|
|
{% if options -%}
|
|
|
|
|
|
Options
|
|
-------
|
|
|
|
.. raw:: html
|
|
|
|
<table border=0 cellpadding=0 class="documentation-table">
|
|
{# Header of the documentation #}
|
|
<tr>
|
|
<th class="head"><div class="cell-border">parameter</div></th>
|
|
<th class="head"><div class="cell-border">required</div></th>
|
|
<th class="head"><div class="cell-border">default</div></th>
|
|
<th class="head"><div class="cell-border">choices</div></th>
|
|
{% if plugin_type != 'module' %}
|
|
<th class="head"><div class="cell-border">configuration</div></th>
|
|
{% endif %}
|
|
<th class="head"><div class="cell-border">comments</div></th>
|
|
</tr>
|
|
{% for key, value in options|dictsort recursive %}
|
|
<tr class="return-value-column">
|
|
{# parameter name with introduced label #}
|
|
<td>
|
|
<div class="outer-elbow-container">
|
|
{% for i in range(1, loop.depth) %}
|
|
<div class="elbow-placeholder">
|
|
</div>
|
|
{% endfor %}
|
|
<div class="elbow-key">
|
|
@{ key }@<br/><div style="font-size: small;">{% if value.version_added %} (added in @{value.version_added}@){% endif %}</div>
|
|
</div>
|
|
<div class="outer-elbow-container">
|
|
</td>
|
|
{# required #}
|
|
<td><div class="cell-border">{% if value.get('required', False) %}yes{% else %}no{% endif %}</div></td>
|
|
{# default value #}
|
|
<td><div class="cell-border">{% if value.default %}@{ value.default }@{% endif %}</div></td>
|
|
{# choices #}
|
|
<td>
|
|
<div class="cell-border">
|
|
{% if value.type == 'bool' %}
|
|
<ul>
|
|
<li>yes</li>
|
|
<li>no</li>
|
|
</ul>
|
|
{% else %}
|
|
{% if value.choices %}
|
|
<ul>
|
|
{% for choice in value.choices %}
|
|
<li>@{ choice }@</li>
|
|
{% endfor %}
|
|
</ul>
|
|
{% endif %}
|
|
{% endif %}
|
|
</div>
|
|
</td>
|
|
{# configuration #}
|
|
{% if plugin_type != 'module' %}
|
|
<td>
|
|
<div class="cell-border">
|
|
{% if 'ini' in value %}
|
|
<div> ini entries:
|
|
{% for ini in value.ini %}
|
|
<p>[@{ ini.section }@ ]<br>@{ ini.key }@ = @{ value.default | default('VALUE') }@</p>
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
{% if 'env' in value %}
|
|
{% for env in value.env %}
|
|
<div>env:@{ env.name }@</div>
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% if 'vars' in value %}
|
|
{% for myvar in value.vars %}
|
|
<div>var: @{ myvar.name }@</div>
|
|
{% endfor %}
|
|
{% endif %}
|
|
</div>
|
|
</td>
|
|
{% endif %}
|
|
{# description #}
|
|
<td>
|
|
<div class="cell-border">
|
|
{% if value.description is string %}
|
|
<div>@{ value.description | replace('\n', '\n ') | html_ify }@</div>
|
|
{% else %}
|
|
{% for desc in value.description %}
|
|
<div>@{ desc | replace('\n', '\n ') | html_ify }@</div>
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% if 'aliases' in value and value.aliases %}
|
|
</br><div style="font-size: small;">aliases: @{ value.aliases|join(', ') }@</div>
|
|
{% endif %}
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
{% if value.suboptions %}
|
|
{% if value.suboptions.items %}
|
|
@{ loop(value.suboptions.items()) }@
|
|
{% elif value.suboptions[0].items %}
|
|
@{ loop(value.suboptions[0].items()) }@
|
|
{% endif %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
</table>
|
|
</br>
|
|
|
|
{% endif %}
|
|
{% if examples or plainexamples -%}
|
|
|
|
|
|
Examples
|
|
--------
|
|
|
|
.. code-block:: yaml
|
|
|
|
{% for example in examples %}
|
|
{% if example['description'] %}@{ example['description'] | indent(4, True) }@{% endif %}
|
|
@{ example['code'] | escape | indent(4, True) }@
|
|
{% endfor %}
|
|
{% if plainexamples %}@{ plainexamples | indent(4, True) }@{% endif %}
|
|
{% endif %}
|
|
|
|
|
|
{% if returndocs -%}
|
|
|
|
|
|
Return Values
|
|
-------------
|
|
|
|
Common return values are documented :ref:`here <common_return_values>`, the following are the fields unique to this {{plugin_type}}:
|
|
|
|
.. raw:: html
|
|
|
|
<table border=0 cellpadding=0 class="documentation-table">
|
|
<tr>
|
|
<th class="head"><div class="cell-border">name</div></th>
|
|
<th class="head"><div class="cell-border">description</div></th>
|
|
<th class="head"><div class="cell-border">returned</div></th>
|
|
<th class="head"><div class="cell-border">type</div></th>
|
|
<th class="head"><div class="cell-border">sample</div></th>
|
|
</tr>
|
|
{% for key, value in returndocs|dictsort recursive %}
|
|
<tr class="return-value-column">
|
|
<td>
|
|
<div class="outer-elbow-container">
|
|
{% for i in range(1, loop.depth) %}
|
|
<div class="elbow-placeholder">
|
|
</div>
|
|
{% endfor %}
|
|
<div class="elbow-key">
|
|
@{ key }@
|
|
</div>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
{% if value.description is string %}
|
|
<div class="cell-border">@{ value.description | replace('\n', '\n ') | html_ify }@</div>
|
|
{% else %}
|
|
{% for desc in value.description %}
|
|
<div class="cell-border">@{ desc | replace('\n', '\n ') | html_ify }@</div>
|
|
{% endfor %}
|
|
{% endif %}
|
|
</td>
|
|
<td align=center><div class="cell-border">@{ value.returned }@</div></td>
|
|
<td align=center><div class="cell-border">@{ value.type }@</div></td>
|
|
<td align=center><div class="cell-border">@{ value.sample | replace('\n', '\n ') | html_ify }@</div></td>
|
|
</tr>
|
|
{# ---------------------------------------------------------
|
|
# sadly we cannot blindly iterate through the child dicts,
|
|
# since in some documentations,
|
|
# lists are used instead of dicts. This handles both types
|
|
# ---------------------------------------------------------#}
|
|
{% if value.contains %}
|
|
{% if value.contains.items %}
|
|
@{ loop(value.contains.items()) }@
|
|
{% elif value.contains[0].items %}
|
|
@{ loop(value.contains[0].items()) }@
|
|
{% endif %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
</table>
|
|
</br></br>
|
|
{% endif %}
|
|
|
|
|
|
{% if notes -%}
|
|
|
|
|
|
Notes
|
|
-----
|
|
|
|
.. note::
|
|
{% for note in notes %}
|
|
- @{ note | convert_symbols_to_format }@
|
|
{% endfor %}
|
|
|
|
|
|
{% endif %}
|
|
{% if author is defined -%}
|
|
|
|
|
|
Author
|
|
~~~~~~
|
|
|
|
{% for author_name in author %}
|
|
* @{ author_name }@
|
|
{% endfor %}
|
|
|
|
|
|
{% endif %}
|
|
{% if not deprecated %}
|
|
{% set support = { 'core': 'The Ansible Core Team', 'network': 'The Ansible Network Team', 'certified': 'an Ansible Partner', 'community': 'The Ansible Community', 'curated': 'A Third Party'} %}
|
|
{% set module_states = { 'preview': 'it is not guaranteed to have a backwards compatible interface', 'stableinterface': 'the maintainers for this module guarantee that no backward incompatible interface changes will be made'} %}
|
|
{% if metadata %}
|
|
{% if metadata.status %}
|
|
|
|
|
|
Status
|
|
~~~~~~
|
|
|
|
{% for cur_state in metadata.status %}
|
|
This module is flagged as **@{cur_state}@** which means that @{module_states[cur_state]}@.
|
|
{% endfor %}
|
|
|
|
|
|
{% endif %}
|
|
{% if metadata.supported_by in ('core', 'network') %}
|
|
|
|
|
|
Maintenance Info
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
For more information about Red Hat's support of this @{ plugin_type }@,
|
|
please refer to this `Knowledge Base article <https://access.redhat.com/articles/rhel-top-support-policies/>`_
|
|
|
|
{% endif %}
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
If you want to help with development, please read :doc:`../../community/index`,
|
|
:doc:`../../dev_guide/testing` and {% if plugin_type == 'module' %}:doc:`../../dev_guide/developing_modules`{% else %}:doc:`../../dev_guide/developing_plugins`{% endif %}.
|