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

为什么我的自定义Ansible模块失败?,ansible,ansible-playbook,Ansible,Ansible Playbook,我正在学习ansible,所以我写了我能想到的最简单的剧本和模块,但失败了 我的剧本 --- - hosts: demo tasks: - name: install demo action: install 我的模块 echo "changed=True msg=OK" 以下几点似乎很好: bash脚本模式是755 剧本已正确链接到模块 这是输出: FAILED! => {"changed": false, "failed": true, "module_

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

我的剧本

---
- hosts: demo
  tasks:
    - name: install demo
      action: install
我的模块

echo "changed=True msg=OK"
以下几点似乎很好:

  • bash脚本模式是755
  • 剧本已正确链接到模块
这是输出:

FAILED! => {"changed": false, "failed": true, "module_stderr": "", "module_stdout": "changed=True msg=OK\r\n", "msg": "MODULE FAILURE", "parsed": false}
我做错了什么?如何使其工作?

模块的输出

试试这个:

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

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

print "some status message"
因为输出应该是有效的JSON

以及:

如果模块返回stderr或以其他方式无法生成有效的JSON,实际输出仍将以Ansible显示,但命令将不会成功

模块的输出

试试这个:

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

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

print "some status message"
因为输出应该是有效的JSON

以及:

如果模块返回stderr或以其他方式无法生成有效的JSON,实际输出仍将以Ansible显示,但命令将不会成功


请在回音行中将您的答案更正为有效的json
echo“{\”changed\”:false}”
我认为非JSON输出在1.8中被删除了。它被称为“baby JSON”。请在回音行中将您的答案更正为有效的JSON
echo“{\”changed\”:false}”
我认为非JSON输出在1.8中被删除了。它被称为“宝贝”。