1

我正在使用 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"
}

我错过了什么?

4

1 回答 1

3

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

ansible target_hosts -m script.sh

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

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

于 2013-11-21T20:47:48.677 回答