Ansible collectionsのモジュールドキュメントをSphinxでHTML出力する

以前、Ansible Collectionsのモジュールドキュメント自動生成方法について以下の記事を書きました。

これは、docsディレクトリ配下にモジュールのrstの自動生成とREADMEの自動更新をするツールを使ったものになっています。
今回は、別のツールを使ってSphinx経由で公式と同じドキュメント形式(VMwareの例)の生成方法について紹介します。

環境説明

今回の環境では、次のバージョンを使用しています。

項目 バージョン
Python 3.6.8
Ansible Base 2.10.5

ドキュメント生成ツール

antsibull を使う事でrstを自動生成してSphinx経由でHTMLのドキュメントを生成することが出来ます。

ドキュメント生成方法

事前準備

Ansibleをインストールします。

antsibullインストール

antsibullをインストールします。

自動的にSphinxもインストールしてくれます。
次にSphinxのテーマをインストールします。

Collectionsを作成

今回は以下のサンプルを使用します。

以下の手順でサンプルのcollectionを作成します。

Ansible設定

今回は作業用ディレクトリにCollectionを作成したので、ansible.cfgでパスの設定をします。

設定が反映されたことを確認します。

サンプルcollectionのモジュールドキュメントが ansible-doc で表示されるか確認します。

SphinxでHTML生成

Sphinxの作業用ディレクトリを作成して初期化します。

Sphinxの設定を追加します。

Sphinxのテーマ(sphinx_rtd_theme)とextensionsの設定を追加します。

設定が終わったらディレクトリを移動します。

次のコマンドを実行してCollectionのrstを生成します。
以下の例では index.rst が上書きされて sample_collections_doc_module.rst のモジュールドキュメントが生成されています。

次にrstからHTMLを生成します。

_build/html にHTMLが生成されているので index.html をブラウザで表示してみてください。
公式のドキュメントのようなCollectionのドキュメントが確認できると思います。

最後に

このように、rstだけではなく、HTML化したいという要件が合った場合は antsibull を使うことで可能です。
また collection_prep の場合はPython 3.8以上が必要でしたが、今回はPython3.6でも問題なく動きます。
antsibull はJinja2テンプレートを使ってrstを生成しているので、テンプレートを修正すれば要件に合わせたドキュメントの自動生成も可能だと思います。

2つの使い分けとしては、こんな感じだと思います。

  • collection_prep
    • リポジトリ内でCollectionのドキュメントを参照させる場合
  • antsibull
    • リポジトリ内だけではなく、HTMLドキュメントも生成したい場合

今後、Collectionを開発していく方の参考になれば幸いです!

Leave a Reply

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください