2016-01-23 64 views
1

我正在学习理智,所以我写了最简单的剧本和模块,我可以想到,它失败了。为什么我的自定义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} 

我在做什么错?我该如何做这项工作?

回答

7

模块must be JSON的输出。因为输出应该是有效的JSON

print "some status message" 

试试这个:

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

docs

你应该也从来没有一个模块中做到这一点。

和:

如果一个模块返回标准错误或以其他方式不能产生有效的JSON,实际输出仍将在Ansible显示,但该命令将不会成功。

+0

请更正您的答案,使其成为回声线中的有效json。 'echo“{\”changed \“:false}”' –

+1

我认为1.8版本中的非JSON输出已被删除。它被称为“宝贝JSON”。 – tedder42

相关问题