Игнорировать сбой при наличии строк в сообщении об ошибке - PullRequest
0 голосов
/ 14 июля 2020

Как игнорировать сбой, если в сообщении об ошибке есть определенные c строки?

stdout_lines:

failed: [lab_ansible] => {"ansible_loop_var": "item", "changed": true, "cmd": "cmd-agent stop lz", "delta": "0:00:02.398303", "end": "2020-07-14 13:17:04.858006", "failed_when_result": true, "item": "lz", "msg": "non-zero return code", "rc": 2, "start": "2020-07-14 13:17:02.459703", "stderr": "", "stderr_lines": [], "stdout": "Processing. Please wait...\nStopping Monitoring Agent for Linux OS ...\nAgent is not running...", "stdout_lines": ["Processing. Please wait...", "Stopping Monitoring Agent for Linux OS ...", "Agent is not running..."]}

Предварительно:

- name: "Stopping agent"
  shell: cmd-agent stop lz
  register: stopped_lz
  failed_when: ( stopped_lz.stdout_lines not in ['Agent is not running...', 'Agent stopped...'] )

Как упоминалось выше, playbook все еще закрыт из-за сбоя

1 Ответ

1 голос
/ 14 июля 2020

Итак, согласно требованию, вы проверяете, остановлен агент или нет. Если агент все еще работает, он должен завершиться неудачно, иначе он должен пройти. Я считаю, что приведенный ниже пример сценария поможет вам выполнить ваше требование.

---
- hosts: all
  name: "[ Playbook Example ]"
  gather_facts: false
  vars:
       - failure_message: "Agent is not running"
  tasks:
          - name: "[ Verify Failure Message ]"
            command: "echo The failure message is {{ failure_message }}"
            register: failure_reg
            failed_when:
               - "'Agent is not running' not in failure_reg.stdout"
               - "'Agent stopped' not in failure_reg.stdout"

          - debug:
                  msg: "{{ failure_reg.stdout }}"
...