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