为什么我的自定义Ansible模块失败了?

时间:2016-01-23 07:23:35

标签: ansible ansible-playbook

我正在学习安信,所以我写了一本我能想到的最简单的剧本和模块,但它失败了。

我的剧本

---
- hosts: demo
  tasks:
    - name: install demo
      action: install

我的模块

echo "changed=True msg=OK"

以下似乎很好:

  • bash脚本模式为755
  • playbook与模块正确链接

这是输出:

FAILED! => {"changed": false, "failed": true, "module_stderr": "", "module_stdout": "changed=True msg=OK\r\n", "msg": "MODULE FAILURE", "parsed": false}

我做错了什么?我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:7)

模块must be JSON的输出。

试试这个:

echo "{\"changed\": false, \"msg\" : \"ok\"}"

来自docs

  

您也不应该在模块中执行此操作:

print "some status message"
     

因为输出应该是有效的JSON。

  

如果模块返回stderr或者无法生成有效的JSON,则实际输出仍将显示在Ansible中,但该命令将不会成功。