■ はじめに
Ansible 2.9 から Ansible Collection という新しいコンテンツ配布形式が始まりました。(Ansible 2.8では実験的サポート)
ロールのほかにも、モジュールやプラグインを含めて配布できるのが特徴です。
Collection でインストールするものは、Ansible 本家リポジトリ ansible/ansible の管理下ではないので、公式ドキュメントには掲載されません。
そのため、ansible-doc コマンドを利用して表示することになりますが、モジュール名の指定方法が標準モジュールとは若干異なり、名前空間を含めて指定します。
この記事では簡単な例をもとに説明します。
- 検証環境
- Ansible 2.9.1
■ 基本書式
標準モジュールでは、 ansible-doc モジュール名 でモジュールのドキュメントを表示できます。Collection モジュールでは、モジュール名の代わりに FQCN でモジュール名指定します。
ansible-doc FQCN
FQCN というのは、Fully Qualified Collection Name の略です。Collection の名前空間、Collection名、モジュール名をドットでつなげたものです。(本当にモジュール名まで含めるのかちょっと自信なし)
たとえば、fragmentedpacket.netbox_modules という Collection 内の netbox_manufacturer モジュールのドキュメントを表示する場合は、以下のコマンドを実行します。
ansible-doc fragmentedpacket.netbox_modules.netbox_manufacturer
■ おためし
例として、fragmentedpacket.netbox_modules という Collection 内の netbox_manufacturer モジュールのドキュメントを表示してみます。
ここでは、対象の Collection のインストールから始めます。
$ ansible-galaxy collection install fragmentedpacket.netbox_modules Process install dependency map Starting collection install process Installing 'fragmentedpacket.netbox_modules:0.1.0' to '/home/ansible/.ansible/collections/ansible_collections/fragmentedpacket/netbox_modules'
netbox_manufacturer モジュールのドキュメントを表示します。
$ ansible-doc fragmentedpacket.netbox_modules.netbox_manufacturer
> NETBOX_MANUFACTURER (/home/asible/.ansible/collections/ansible_collections/fragmentedpacket/netbox_modules/plugins/modules/netbox_manufacturer.py)
Creates or removes manufacturers from Netbox
* This module is maintained by The Ansible Community
OPTIONS (= is mandatory):
- data
Defines the manufacturer configuration
[Default: (null)]
suboptions:
name:
description:
- The name of the manufacturer
required: true
= netbox_token
The token created within Netbox to authorize API access
= netbox_url
URL of the Netbox instance resolvable by Ansible control host
- state
Use `present' or `absent' for adding or removing.
(Choices: absent, present)[Default: present]
- validate_certs
If `no', SSL certificates will not be validated. This should only be used on personally controlled sites using self-signed certificates.
[Default: yes]
type: bool
NOTES:
* Tags should be defined as a YAML list
* This should be ran with connection `local' and hosts `localhost'
REQUIREMENTS: pynetbox
AUTHOR: Mikhail Yohman (@FragmentedPacket)
METADATA:
status:
- preview
supported_by: community
EXAMPLES:
- name: "Test Netbox modules"
connection: local
hosts: localhost
gather_facts: False
tasks:
- name: Create manufacturer within Netbox with only required information
netbox_manufacturer:
netbox_url: http://netbox.local
netbox_token: thisIsMyToken
data:
name: Test Manufacturer
state: present
- name: Delete manufacturer within netbox
netbox_manufacturer:
netbox_url: http://netbox.local
netbox_token: thisIsMyToken
data:
name: Test Manufacturer
state: absent
RETURN VALUES:
manufacturer:
description: Serialized object as created or already existent within Netbox
returned: success (when I(state=present))
type: dict
msg:
description: Message indicating failure or info about what has been achieved
returned: always
type: str
無事に表示できました。
netbox_token、netbox_url が必須オプションで、その他にも data や state などのオプションがあることが確認できます。その他、EXAMPLES も確認できます。
なお、Collection のインストール先や読み込み先は COLLECTIONS_PATHS という設定に基づきます。デフォルトは ~/.ansible/collections と /usr/share/ansible/collections です。
■ まとめ
Collection モジュールのドキュメントは ansible-doc FQCN で表示できることをご紹介しました。
これから Collection を含めたコンテンツ配信が活性化されると、Collection を利用し、ドキュメントを表示する機会も増えるかもしれませんので、表示方法を覚えておくと良さそうです。