モジュールを開発する必要がありますか¶
Ansible モジュールの開発は容易ですが、通常は不要です。新しいモジュールを書き始める前に、以下を確認します。
- 同様のモジュールが存在しているか。
既存のモジュールは必要な機能に対応できます。Ansible Core には、数千ものモジュールが含まれています。既存のモジュールの一覧 を検索し、必要な動作を行うモジュールがあるかどうかを確認します。
- プル要求が存在しているか。
既存のプル要求は、必要な機能に対応する場合があります。他のユーザーが同様のモジュールの開発を開始している場合は、そのモジュールを確認してテストできます。オープンモジュールのプル要求を見つける方法はいくつかあります。
- GitHub の新しいモジュール PR
- モジュールへのすべてのアップデート
- lib/ansible/modules/ で ディレクトリー別に表示されている新規 PR
ニーズに対応していると思われる既存の PR が見つかった場合は、PR に関するご意見やご要望をお寄せください。コミュニティーのフィードバックにより、レビューおよびマージのプロセスが速くなります。
- 代わりにアクションプラグインを使用するか、または開発する必要があります。
アクションプラグインは、必要な機能を取得する最善の方法です。アクションプラグインは管理ノードではなく、コントロールノードで実行され、それらの機能はすべてのモジュールで利用できます。プラグインの開発に関する詳細は、「プラグインの開発」を参照してください。
- 代わりにロールを使用する必要があります。
既存のモジュールの組み合わせによって、希望の機能に対応できる可能性があります。このタイプのユースケースにロールを作成することができます。「ロールのドキュメント」を参照してください。
- 1 つのモジュールではなく複数のモジュールを記述するべきか。
単一のモジュールでは、希望する機能が大きすぎる場合があります。Ansible を新しいクラウドプロバイダー、データベース、またはネットワークプラットフォームに接続する場合は、モジュールの関連グループを開発 しないといけない場合があります。
- モジュールは簡潔で明確に定義された機能を備えている必要があります。基本的には、1 つのことをうまく行うという UNIX の哲学に従ってください。
- モジュールは、使用する API/ツールの基礎となるすべてのオプションを把握する必要はありません。たとえば、必要なモジュールパラメーターの有効な値を文書化できない場合、それはモジュールが拒否されることを示しています。
- モジュールは通常、リソースと対話するロジックの多くを包含する必要があります。ロジックがあまり含まれていない API の軽量ラッパーを使用すると、ユーザーがあまりにも多くのロジックを Playbook にオフロードする可能性があるため、モジュールが拒否されます。代わりに、API の小さな個々の部分と対話するための複数のモジュールを作成してみてください。
ユースケースが、既存のモジュール、オープン PR、アクションプラグイン、またはロールでは対応されていなくて、複数のモジュールを作成する必要がない場合は、新しいモジュールの開発を開始する準備ができています。次のステップは、以下のトピックから選択します。
- 新しいモジュールで開始 したい。
- 適切なモジュールを開発するためのヒントや規則 を確認したい。
- Windows モジュールを作成 したい。
- Ansible のアーキテクチャーの概要 がほしい。
- モジュールを文書化 したい。
- モジュールを Ansible Core に提供 したい。
- ユニットおよびインテグレーションテストをモジュールに追加 したい。
- Python 3 サポートをモジュールに追加 したい。
- 複数のモジュールを作成 したい。
See also
- All modules
- 利用可能なモジュールについて
- GitHub モジュールディレクトリー
- モジュールソースコードの閲覧
- メーリングリスト
- 開発メーリングリスト
- irc.freenode.net
- #ansible IRC chat channel