我正在使用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"
}
我错过了什么?
答案 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