Назад | Перейти на главную страницу

Распечатайте заголовок Ansible перед выполнением длительной задачи

Контекст

У меня есть сборник сценариев Ansible, который включает очень долгую задачу, до одного часа.

Очень упрощенно это выглядит так:

- hosts: localhost
  tasks:
  - name: Short task
    debug:
      msg: "I'm quick!"

  - name: Long task
    shell: "sleep 15s"

Когда пользователь запускает playbook, вывод сначала:

PLAY [localhost] ********************
TASK [Gathering Facts] **************
ok: [127.0.0.1]

TASK [Short task] *******************
ok: [127.0.0.1] => {
    "msg": "I'm quick!"
}

(hang there until Long task is done)

TASK [Long task] ********************
changed: [127.0.0.1]

Проблема

Конечные пользователи учебника считают, что существует проблема с Short task так как он там висит, пока он Long task что вызывает задержку.

Вопрос

Как я могу настроить ansible или playbook для печати заголовков, определенных в name: перед выполняя задачу?

То, что я хочу достичь, - это результат вроде:

PLAY [localhost] ********************
TASK [Gathering Facts] **************
ok: [127.0.0.1]

TASK [Short task] *******************
ok: [127.0.0.1] => {
    "msg": "I'm quick!"
}

TASK [Long task] ********************

(and hang there during the execution)

changed: [127.0.0.1]

Перенос моего комментария в ответ по запросу OP


Я использую Ansible 2.9.2.

Я пробовал без файла конфигурации и с файлом конфигурации без значения, объявленного для stdout_callback (дефолт). В любом случае я не могу воспроизвести вашу проблему.

Это моя тестовая книга:

---
- hosts: localhost
  gather_facts: false

  tasks:

    - name: Short running
      debug:
        msg: I'm a short task

    - name: LOOOOOOOOOng task
      shell: sleep 2000

И результат (в обоих случаях. Примечание: прерывание пользователем после отображения заголовка задачи)

$ ansible-playbook /tmp/play.yml  

PLAY [localhost] **************************************************************************************************************************************************************************************************

TASK [Short running] **********************************************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": "I'm a short task"
}

TASK [LOOOOOOOOOng task] ******************************************************************************************************************************************************************************************
^C [ERROR]: User interrupted execution

Дважды проверьте, какой файл конфигурации вы загружаете ansible-playbook --version в каталоге, в котором вы собираетесь запустить playbook. Я также предлагаю вам попробовать без какого-либо файла конфигурации, чтобы увидеть, решит ли он вашу проблему (а затем посмотрите, какой параметр на самом деле вызывает проблему).


Добавлено из комментария OP: оказывается, что проблемная настройка в ansible.cfg в этом конкретном случае была display_skipped_hosts=False

простой подход к этому - распечатать сообщение, информирующее пользователя о том, что будет выполняться длинная задача, а затем начать выполнение задачи.