尝试打印firewalld状态时出现严重致命错误

时间:2018-09-16 16:03:17

标签: ansible firewalld

在这里,我正在尝试打印firewall-cmd --state命令的状态,但是引发了致命错误。

 name: Check firewall status
        hosts: st

        tasks:
        - name: Check status of firewall
          command: firewall-cmd --state
          register: status

        - name: Print version
          debug:
             msg: "Status = {{ status.stdout }}"

远程主机中的状态“未运行”。但是没有得到结果。

我得到以下输出

fatal: [borexample.com]: FAILED! => {"changed": true, "cmd": ["firewall-cmd", "--state"], "delta": "0:00:00.189023", "end": "2018-09-16 11:40:17.319482", "msg": "non-zero return code", "rc": 252, "start": "2018-09-16 11:40:17.130459", "stderr": "", "stderr_lines": [], "stdout": "\u001b[91mnot running\u001b[00m", "stdout_lines": ["\u001b[91mnot running\u001b[00m"]}

我应该如何修改代码,以便仅获得状态?

2 个答案:

答案 0 :(得分:0)

我更喜欢使用failed_when:来控制您的输出rc。有关更多信息,请访问Ansible Documentation。但是您也可以使用ìgnore_errors: true

检查Firewall-cmd Documentation中的错误代码,以查看将哪些代码添加到您的剧本中。

在您的情况下可能会做得很好:

  - name: Check status of firewall
    command: firewall-cmd --state
    register: status
    failed_when:
      - status.rc != 0 
      - status.rc != 252

即使您可以走得更远,并使用failed_when: false来避免命令失败。

答案 1 :(得分:0)

巴蒂斯特·米勒·马蒂亚斯(Baptiste Mille-Mathias)建议的ignore_errors可以让您继续,但随后您想“调试” {{status.stderr}},因为在这种情况下,标准输出将为空。