如何在 ansible wait_for 模块中打印成功和失败的调试消息以测试防火墙。?

How to print debug message for success and failure in ansible wait_for module to test firewall.?

如何在 Ansible wait_for 模块中打印包含目标主机信息的成功和失败调试消息以测试防火墙?

 - name: Check Firewall Connectivity
    wait_for:
      host: 10.200.12.2
      port: 2041
      state: started
      delay: 0
      timeout: 3
    ignore_errors: yes

TL;DR;

这是您正在寻找的debug

- debug:
    msg: "{{ 'Failed with message: ' ~ wait_result.msg if wait_result.failed else 'Success connecting to Firewall' }}" 

您始终可以 register Ansible 中的任务结果。
然后根据这个结果,你可以实际行动,或者打印一些东西。

我是这样处理它的:我从头到尾都不知道任务会给我什么样的结果,但我知道我可以 registerdebug 它。

所以我制作了这个剧本:

- hosts: local
  gather_facts: no

  tasks:
    - name: Check Firewall Connectivity
      wait_for:
        host: 10.200.12.2
        port: 2041
        state: started
        delay: 0
        timeout: 3
      ignore_errors: yes
      register: wait_result

    - debug:
        msg: "{{ wait_result }}"

它导致了这次回顾:

PLAY [local] *******************************************************************

TASK [Check Firewall Connectivity] *********************************************
fatal: [local]: FAILED! => {"changed": false, "elapsed": 3, "msg": "Timeout when waiting for 127.0.0.1:22"}
...ignoring

TASK [debug] *******************************************************************
ok: [local] => {
    "msg": {
        "changed": false,
        "elapsed": 3,
        "failed": true,
        "msg": "Timeout when waiting for 127.0.0.1:22"
    }
}

PLAY RECAP *********************************************************************
local                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=1   

所以根据这次回顾,我知道我的结果有一个 属性 failed 如果 wait_for 任务失败,这将是 true
我什至因此 msg 失败。

所以现在,在 Jinja inline if expression 的帮助下,我可以创建这个任务:

- debug:
    msg: "{{ 'Failed with message: ' ~ wait_result.msg if wait_result.failed else 'Success connecting to Firewall' }}" 

这将导致重述:

TASK [debug] *******************************************************************
ok: [local] => {
    "msg": "Success connecting to Firewall"
}

或回顾:

TASK [debug] *******************************************************************
ok: [local] => {
    "msg": "Failed with message: Timeout when waiting for 10.200.12.2:2041"
}