隣接 YAML ドキュメントファイル
プラグインの YAML ドキュメント
ほとんどの Ansible プラグインでは、ドキュメントはコードと同じファイルにあります。このアプローチは、次の場合には機能しません。
テストやフィルターなど、複数のプラグインが同じファイルで定義されている場合。
プラグインが Python 以外の言語 (モジュール) で記述されている場合。
このような場合、隣接する .py
ファイルでドキュメントを提供するプラグインが必要です。ansible-core 2.14 以降では、代わりに隣接 YAML ファイルとしてドキュメントを提供できます。YAML ドキュメントファイルの形式は、純粋な YAML であることを除いて Python の該当ファイルとほぼ同じです。
YAML 形式
Python では、各セクションは変数 DOCUMENTATION = r""" ... """
ですが、YAML ではマッピングキー DOCUMENTATION: ...
です。
これは、ドキュメントが Python ファイルに埋め込まれていることを示す長い例です。
DOCUMENTATION = r'''
description: something
options:
option_name:
description: describe this config option
default: default value for this config option
env:
- name: NAME_OF_ENV_VAR
ini:
- section: section_of_ansible.cfg_where_this_config_option_is_defined
key: key_used_in_ansible.cfg
vars:
- name: name_of_ansible_var
- name: name_of_second_var
version_added: X.x
required: True/False
type: boolean/float/integer/list/none/path/pathlist/pathspec/string/tmppath
version_added: X.x
'''
EXAMPLES = r'''
# TODO: write examples
'''
次の例は、同じドキュメントを YAML 形式で示しています。
DOCUMENTATION:
description: something
options:
option_name:
description: describe this config option
default: default value for this config option
env:
- name: NAME_OF_ENV_VAR
ini:
- section: section_of_ansible.cfg_where_this_config_option_is_defined
key: key_used_in_ansible.cfg
vars:
- name: name_of_ansible_var
- name: name_of_second_var
version_added: X.x
required: True/False
type: boolean/float/integer/list/none/path/pathlist/pathspec/string/tmppath
version_added: X.x
EXAMPLES: # TODO: write examples
上記の例が示すように、Python 変数にはすでに YAML が含まれています。YAML ドキュメントを使用するための主な変更点として、そのような変数から YAML を移動させます。
隣接 YAML ドキュメントファイルは、ドキュメント化するプラグインまたはモジュールと同じディレクトリーにある必要があります。これは、プラグインまたはモジュールを含む任意のディレクトリーでドキュメントを利用できることを意味します。
サポート対象のプラグインタイプ
YAML ドキュメントは、主にフィルター、テスト、モジュールを対象としています。他のプラグインタイプで使用できますが、Ansible では可能な限りコードと同じファイルにドキュメントを含めることが推奨されます。
参考
- Collection Index
既存のコレクション、モジュール、およびプラグインの閲覧
- Python API
タスク実行用の Python API について
- 動的インベントリーの開発
動的インベントリーソースの開発方法について
- モジュールの開発
Ansible モジュールの作成方法について
- Mailing List
開発メーリングリスト
- リアルタイムチャット
Ansible チャットチャンネルへの参加方法