如何为Ansible报告格式化脚本输出?

时间:2013-10-22 20:39:12

标签: ansible

我正在使用Ansible v1.3在一组服务器上运行bash脚本。我正在尝试使用Ansible正在期望正确格式化输出的输出,但我错过了一些东西。

我已经在某处找到了(找不到链接!)如果脚本输出格式化为JSON,Ansible会将其拾取并将其包含在输出中。

所以在剧本中,我做的最后一件事是:

cat <<EOF
{
    "value" : $value
}
EOF

我这样称呼我的剧本:

ansible target_hosts -m script -a script.sh

我得到的输出是这样的:

X.X.X.X | success >> {
    "rc": 0,
    "stderr": "",
    "stdout": "value=96\r\n"
}

我期待看到这样的事情:

X.X.X.X | success >> {
    "rc": 0,
    "stderr": "",
    "stdout": "",
    "value": "96"
}

我错过了什么?

1 个答案:

答案 0 :(得分:3)

问题是您将模块作为脚本运行。创建一个library文件夹并将您的脚本放在那里。之后,您可以使用以下命令运行脚本:

ansible target_hosts -m script.sh

如有疑问,请查看:http://jpmens.net/2012/07/05/shell-scripts-as-ansible-modules/

注意:不要忘记在文件顶部加#!/bin/bash,否则ansible将失败并显示target_host | FAILED => module is missing interpreter line

等消息