Ansible/Tips


独自モジュールで from ansible.module_utils.basic import * を書くとうまく実行できない

掲題の通り、独自モジュールを作って実行すると
^\r\nSyntaxError: invalid syntax\r\n", "msg": "MODULE FAILURE", "parsed": false}
なんていうエラーが出る。

テストモジュール使って実行すると
# test-module -m ****.py
* including generated source, if any, saving to: /root/.ansible_module_generated
***********************************
INVALID OUTPUT FROM ZIPLOADER MODULE WRAPPER
というエラー。

すごい調べてようやく分かった原因は、pythonファイル名に「-」(ハイフン)があるとエラーになるということ。

つまり公式の例を基に
#!/usr/bin/python

from ansible.module_utils.basic import *

import datetime
import json

def main():
  module = AnsibleModule(
    argument_spec = dict()
  )

  date = str(datetime.datetime.now())
  module.exit_json(date=date, changed=False)

if __name__ == '__main__':
  main()
こんなコードを書いて、test.py と te-st.py の2つを保存する。

この状態でテストすると、te-st.pyの方だけエラーになる。
# test-module -m test.py
# test-module -m te-st.py

ひどい目にあった。

ちなみにハイフンは使えないがアンダーバー「_」は使えるのでそちらにしましょう。

  • 最終更新:2016-07-15 15:29:50

このWIKIを編集するにはパスワード入力が必要です

認証パスワード