ansibleのModuleでHello, Worldを作ってみました。
Moduleの開発は、Developing Modulesにドキュメントやサンプルがあります。
最小限必要なことは少ないので、Hello, Worldは、15分ほどで作成できます。
準備
Ubuntu 14.04 LTSにansibleがインストールされている前提です。
最低限必要な準備は、下記です。
- ansibleを起動するディレクトリにlibraryというディレクトリを作成
- libraryディレクトリにスクリプトをプラグイン名=スクリプトファイル名となるように作成
スクリプトは、管理対象のサーバで実行されます。
ansibleがpythonで実行されるので、スクリプトをpythonで記述すると、管理対象の環境によらず実行することができます。
おそらく、もっと高度な機能を実装する場合には、pythonがベストです。
ですが、必須ということもなく管理対象のサーバで使えるスクリプトであれば使うことができました。
今回は、入門なので、bashを使います。
スクリプトは、下記に従う必要があります。
- 1行目は、shebang(
#!
で始まるスクリプトを実行するパスを記載する行)を記述 - 出力は、json形式
作成
下記のようにディレクトリとスクリプトを作成して動作確認します。
$ mkdir library $ cat library/helloworld #! /bin/bash printf "{\"msg\": \"helloworld\"}\n" $ bash library/helloworld {"msg": "helloworld"} $
sshが疎通していることも合わせて確認します。
$ ssh localhost hostname trusty64 $
実行
下記のようにModuleとして動作することを確認できました。
$ ansible -i "localhost," localhost -m helloworld localhost | SUCCESS => { "changed": false, "msg": "helloworld" } $
python版
pythonに入門してpython版Moduleも作ってみました。
$ cat library/helloworld.py #! /usr/bin/python import json print json.dumps({ "hello": "workd" }) $ python library/helloworld.py {"hello": "workd"} $ ansible -i "localhost," localhost -m helloworld localhost | SUCCESS => { "changed": false, "hello": "workd" } $