モジュールを開発する必要がありますか

Ansible モジュールの開発は容易ですが、通常は不要です。新しいモジュールを書き始める前に、以下を確認します。

  1. 同様のモジュールが存在しているか。

既存のモジュールは必要な機能に対応できます。Ansible Core には、数千ものモジュールが含まれています。既存のモジュールの一覧 を検索し、必要な動作を行うモジュールがあるかどうかを確認します。

  1. プル要求が存在しているか。

既存のプル要求は、必要な機能に対応する場合があります。他のユーザーが同様のモジュールの開発を開始している場合は、そのモジュールを確認してテストできます。オープンモジュールのプル要求を見つける方法はいくつかあります。

ニーズに対応していると思われる既存の PR が見つかった場合は、PR に関するご意見やご要望をお寄せください。コミュニティーのフィードバックにより、レビューおよびマージのプロセスが速くなります。

  1. 代わりにアクションプラグインを使用するか、または開発する必要があります。

アクションプラグインは、必要な機能を取得する最善の方法です。アクションプラグインは管理ノードではなく、コントロールノードで実行され、それらの機能はすべてのモジュールで利用できます。プラグインの開発に関する詳細は、「プラグインの開発」を参照してください。

  1. 代わりにロールを使用する必要があります。

既存のモジュールの組み合わせによって、希望の機能に対応できる可能性があります。このタイプのユースケースにロールを作成することができます。「ロールのドキュメント」を参照してください。

  1. 1 つのモジュールではなく複数のモジュールを記述するべきか。

単一のモジュールでは、希望する機能が大きすぎる場合があります。Ansible を新しいクラウドプロバイダー、データベース、またはネットワークプラットフォームに接続する場合は、モジュールの関連グループを開発 しないといけない場合があります。

  • モジュールは簡潔で明確に定義された機能を備えている必要があります。基本的には、1 つのことをうまく行うという UNIX の哲学に従ってください。
  • モジュールは、使用する API/ツールの基礎となるすべてのオプションを把握する必要はありません。たとえば、必要なモジュールパラメーターの有効な値を文書化できない場合、それはモジュールが拒否されることを示しています。
  • モジュールは通常、リソースと対話するロジックの多くを包含する必要があります。ロジックがあまり含まれていない API の軽量ラッパーを使用すると、ユーザーがあまりにも多くのロジックを Playbook にオフロードする可能性があるため、モジュールが拒否されます。代わりに、API の小さな個々の部分と対話するための複数のモジュールを作成してみてください。

ユースケースが、既存のモジュール、オープン PR、アクションプラグイン、またはロールでは対応されていなくて、複数のモジュールを作成する必要がない場合は、新しいモジュールの開発を開始する準備ができています。次のステップは、以下のトピックから選択します。

See also

All modules
利用可能なモジュールについて
GitHub モジュールディレクトリー
モジュールソースコードの閲覧
メーリングリスト
開発メーリングリスト
irc.freenode.net
#ansible IRC chat channel