ksaitoの日記

日々試したことの覚え書き

ansible Moduleの作り方

移転しました。

自動的にリダイレクトします。

ansibleのModuleでHello, Worldを作ってみました。 Moduleの開発は、Developing Modulesにドキュメントやサンプルがあります。 最小限必要なことは少ないので、Hello, Worldは、15分ほどで作成できます。

準備

Ubuntu 14.04 LTSにansibleがインストールされている前提です。

最低限必要な準備は、下記です。

スクリプトは、管理対象のサーバで実行されます。

ansibleがpythonで実行されるので、スクリプトpythonで記述すると、管理対象の環境によらず実行することができます。 おそらく、もっと高度な機能を実装する場合には、pythonがベストです。

ですが、必須ということもなく管理対象のサーバで使えるスクリプトであれば使うことができました。

今回は、入門なので、bashを使います。

スクリプトは、下記に従う必要があります。

作成

下記のようにディレクトリとスクリプトを作成して動作確認します。

$ 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"
}
$