Распечатать задание, на котором произошел сбой хоста в конце playbook? - PullRequest
0 голосов
/ 31 октября 2019

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

Есть ли способ распечатать в конце книги пьес, например, «Ошибка хоста 1 в задании 1 / cmd»

1 Ответ

0 голосов
/ 31 октября 2019

Не знаю, подходит ли это точно к вашей проблеме, но вы можете помочь себе с небольшой обработкой исключений, например так:

---

- hosts: localhost
  any_errors_fatal: true
  tasks:
    - block:
      - name: "Fail a command"
        shell: |
          rm someNonExistentFile
      rescue:
        - debug:
            msg: "{{ ansible_failed_result }}"
        #- fail:
        #    msg: "Playbook run failed. Aborting..."
        # uncomment this failed section to actually fail a deployment after writing the error message

Переменная ansible_failed_result содержит что-то вроде этого:

TASK [debug] ************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": {
        "changed": true,
        "cmd": "rm someNonExistentFile\n",
        "delta": "0:00:00.036509",
        "end": "2019-10-31 12:06:09.579806",
        "failed": true,
        "invocation": {
            "module_args": {
                "_raw_params": "rm someNonExistentFile\n",
                "_uses_shell": true,
                "argv": null,
                "chdir": null,
                "creates": null,
                "executable": null,
                "removes": null,
                "stdin": null,
                "stdin_add_newline": true,
                "strip_empty_ends": true,
                "warn": true
            }
        },
        "msg": "non-zero return code",
        "rc": 1,
        "start": "2019-10-31 12:06:09.543297",
        "stderr": "rm: cannot remove ‘someNonExistentFile’: No such file or directory",
        "stderr_lines": [
            "rm: cannot remove ‘someNonExistentFile’: No such file or directory"
        ],
        "stdout": "",
        "stdout_lines": [],
        "warnings": [
            "Consider using the file module with state=absent rather than running 'rm'.  If you need to use command because file is insufficient you can add 'warn: false' to this command task or set 'command_warnings=False' in ansible.cfg to get rid of this message."
        ]
    }
}

В основном я использую stderr, когда это применимо. В противном случае я использую "{{ ansible_failed_result | to_nice_json }}".

hth

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...