シェルスクリプトでAnsibleモジュールを作ってみる


この投稿はAnsible 2 Advent Calendar 2019(通称裏アドベントカレンダー?)の13日めの記事です。
1週間全部俺の6回目です!

今回はシェルスクリプトでAnsibleモジュールを作ってみようと思います。

シェルスクリプト

どうやるの?

Ansibleは標準だとPythonでモジュールが作成されていますが、他の言語で作成することができます。
例えばAnsible Advent Calendar 2019の2日目の記事はGoでモジュールを作る例でした。

こちらの記事で述べられている通り処理結果はJSONで返すことと、第一引数でパラメーターが記載されているファイルパスが渡されるので、それを読み込んでパースが出来れば何の言語でも大丈夫です。

パラメーターファイルの中身

今回はディレクトリを操作するモジュールをシェルスクリプトで作ってみました。

ディレクトリを操作するモジュール

パラメーターは以下のものが使用できます。

パラメーター 説明
name ディレクトリ名
path ディレクトリを作成するパス
state present or absent

上記スクリプトを作成します。

Playbook

作成

Playbookを作成します。

実行

Playbookを実行します。

ディレクトリが作成されていることが確認できます。
もう一度実行します。

冪統制で既にディレクトリが存在しているため changed は発生しません。
ちなみに、registerを使った場合は以下のように directory_path に作成されたディレクトリのパスが表示されます。

次に stateabsent に変更して削除してみます。

ディレクトリが削除されていることが確認できます。
もう一度実行します。

こちらも冪統制で既にディレクトリが削除されているので changed が発生しません。

オプションが足りない場合は以下のようにエラーが発生します。

最後に

今回シェルスクリプトでAnsibleモジュールを作ってみましたが正直ツライw
ただ、冪統制の処理を書くことと戻りをJSONで返すだけで色々な言語で作れちゃうので便利ですね 🙂

Leave a Reply

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

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