ansible

ansibleモジュールの引数と戻り値の処理

ansibleモジュールは、pythonで書くと引数と戻り値に便利なヘルパがあり便利です。

AnsibleModuleargument_specで引数を定義します。引数が必須かオプションかを定義できるようです。

戻り値は、exit_jsonで返します。最後の2行は、python初心者なのでおまじないということで…

$ cat library/mymodule.py
#! /usr/bin/python
def main():
module = AnsibleModule(
argument_spec = dict(
src  = dict(required=True),
dest = dict(required=False),
),
)
src  = module.params['src']
dest = module.params['dest']
res_args = dict(
src = src, dest = dest, changed = True
)
module.exit_json(**res_args)
# import module snippets
from ansible.module_utils.basic import *
main()
$ 

実行

テスト実行します。前に書いたサンプルより一貫性があって分かりやすい実装です。

$ $ANSIBLE_HOME/hacking/test-module -m library/mymodule.py -a "src=bbb"
* including generated source, if any, saving to: /home/vagrant/.ansible_module_generated
* this may offset any line numbers in tracebacks/debuggers!
***********************************
RAW OUTPUT
{"dest": null, "src": "bbb", "changed": true, "invocation": {"module_args": {"dest": null, "src": "bbb"}}}
***********************************
PARSED OUTPUT
{
"changed": true,
"dest": null,
"invocation": {
"module_args": {
"dest": null,
"src": "bbb"
}
},
"src": "bbb"
}
$ 

必須オプションが指定されないと、failedとエラーメッセージが戻り値に設定されます。これは便利です。

$ $ANSIBLE_HOME/hacking/test-module -m library/mymodule.py -a "dest=bbb"
* including generated source, if any, saving to: /home/vagrant/.ansible_module_generated
* this may offset any line numbers in tracebacks/debuggers!
***********************************
RAW OUTPUT
{"msg": "missing required arguments: src", "failed": true, "invocation": {"module_args": {"dest": "bbb"}}}
***********************************
PARSED OUTPUT
{
"failed": true,
"invocation": {
"module_args": {
"dest": "bbb"
}
},
"msg": "missing required arguments: src"
}
$ 
タイトルとURLをコピーしました