仅打印失败的任务-Ansible

时间:2018-08-28 01:13:40

标签: ansible

我创建了一个Ansible剧本,它仅检查到特定端口上目标主机的连接。 这是我的剧本

std::mutex mtx;
mtx.try_lock();
union //I have tried changing this from union to struct to no avail
{
    unsigned char*  ImageData = nullptr;
    FFloat16Color*  ImageFloat16;
    uint16 *        ImageUINT16;
} imgData;
TArray<uint8> data;
uTex->Source.GetMipData(data, 0);
imgData.ImageData = data.GetData(); //Breaks Here
mtx.unlock();

我执行剧本时获得的输出包含已更改(成功)和失败。

在实际情况下,我有许多目标主机,并且我的输出很大。

我想要的是,我想在底部显示最终报告,该报告仅显示源和目标之间所有失败连接的列表。

谢谢

2 个答案:

答案 0 :(得分:0)

  

我想在底部显示最终报告,该报告仅显示源和目标之间所有失败连接的列表

我相信您要寻找的旋钮是stdout callback plugins。虽然我没有看到一个完全按照您的意愿 做的事,但其中有两个似乎可以使您与您亲密:

actionable声称它只会发出Failed和Changed事件:

$ ANSIBLE_STDOUT_CALLBACK=actionable ansible-playbook ...

然后,沿复杂性阶梯上移,json顾名思义,将发出JSON中步骤的记录,从而使您可以准确地过滤输出 您想要的(.failed是每个任务的布尔值,都表明了这一点)

$ ANSIBLE_STDOUT_CALLBACK=json ansible-playbook ...

然后,正如“插件”部分所暗示的那样,如果您愿意的话,还可以实现自己的工具,以精确地完成您想要的;除了文档之外,还提供了a lot of examples

答案 1 :(得分:0)

我有一个类似的剧本,并且希望连接失败的列表相同,我要做的是:

  • 保存输出命令register: nc
  • 添加ignore_errors: true
  • 在调试部分中,显示正常和失败的连接,要求返回代码。

我的剧本:

---
  - name: test-connection
    gather_facts: false
    hosts: "{{ group_hosts }}"
    tasks:
      - name: test connection 
        shell: "nc -w 5 -zv {{ inventory_hostname }} {{ listen_port }}"
        register: nc
        ignore_errors: true

      - name: ok connections
        debug: var=nc.stderr
        when: "nc.rc == 0"

      - name: failed connections
        debug: var=nc.stderr
        when: "nc.rc != 0"

连接失败的输出示例:

TASK [failed connections] **********************************************************************************************
ok: [10.1.2.100] => {
    "nc.stderr": "nc: connect to 10.1.2.100 port 22 (tcp) timed out: Operation now in progress"
}
ok: [10.1.2.101] => {
    "nc.stderr": "nc: connect to 10.1.2.101 port 22 (tcp) timed out: Operation now in progress"
}
ok: [10.1.2.102] => {
    "nc.stderr": "nc: connect to 10.1.2.102 port 22 (tcp) timed out: Operation now in progress"