Возможная фатальная ошибка при попытке напечатать состояние firewalld - PullRequest
0 голосов
/ 16 сентября 2018

Здесь я пытаюсь распечатать статус команды 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 голосов
/ 16 сентября 2018

ignore_errors, предложенный Baptiste Mille-Mathias, позволит вам продолжить, но тогда вы захотите "отладить" {{status.stderr}}, так как в этом случае стандартный вывод ase будет пуст.

0 голосов
/ 16 сентября 2018

Я предпочитаю использовать failed_when: для управления вашим выходом.Больше информации на Ansible Documentation .Но вы также можете использовать ìgnore_errors: true

Проверьте коды ошибок в документации Firewall-cmd , чтобы увидеть, какие коды добавляются в вашу книгу.

В вашем сценарии может быть хорошоделать:

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

Даже вы можете пойти дальше и использовать failed_when: false, чтобы избежать сбоя команды.

...