У меня есть сборник сценариев 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
простой подход к этому - распечатать сообщение, информирующее пользователя о том, что будет выполняться длинная задача, а затем начать выполнение задачи.