Заставьте Ansible Печатать Строки Для Include_Role(S)

  • Автор темы RamusGomulko
  • Обновлено
  • 21, Oct 2024
  • #1

Я думал, что это будет тривиально, но нигде не могу найти ответа.

Допустим, у меня есть файл playbook.yml, который выглядит так:

 
 
 
 TASK [some_role : I'm a task!] *********
ok: [MACHINE]
 

И затем у меня есть файл main.yml в roles/some_role/tasks, который выглядит так:

BLOCK [I'm a block!] ********* ROLE [I'm a role!] ********* TASK [some_role : I'm a task!] ********* ok: [MACHINE]

Я ожидаю/хочу напечатать следующее:

- name: I'm a task! git: repo=https://doesnexist.com/nope.git dest={{ install_path }}

Или что-то в этом роде. Вместо этого печатается следующее:

- hosts: all tasks: - name: I'm a block! block: - name: I'm a role! include_role: name=some_role

Так зачем же я поместил эти имена в блок и включил функцию include_role? Есть ли способ получить то, что я хочу, или хотя бы что-то близкое к этому? Модуль отладки не делает то, что я хочу, так как он очень плохо отформатирован.

#ансибль

RamusGomulko


Рег
24 Apr, 2006

Тем
64

Постов
167

Баллов
507
  • 25, Oct 2024
  • #2

Мне удалось создать собственный плагин обратного вызова. Я начал с кода обратного вызова по умолчанию и изменил его:

 
 
 
 PLAY [localhost]
TASK [I'm a role!]
TASK [role5 : I'm a task!]
 

Теперь вывод выглядит так:

tasks: - name: "I'm a block!" block: - name: "I'm a role!" include_role: name=role5

Ролевая линия выделена жирным шрифтом. Эта работа еще продолжается, но она, по крайней мере, делает более очевидным, где выполняются роли. Моя решимость на block is that it is impossible to do what I wanted, due to the way the block class is implemented in Ansible.

 

Максим Куприянов


Рег
23 Oct, 2020

Тем
91

Постов
204

Баллов
679
  • 25, Oct 2024
  • #3

include_role это задача, и имя печатается (см. ниже). блокировать это не задача и имя не печатается ни одной плагин.

Спектакль

ROLE [some_role] ***************************************************** TASK [some_role : I'm a task!] *************************************** ok: [MACHINE] TASK [some_role : Some other task!] ********************************** ok: [MACHINE] ROLE [another_role] ************************************************** TASK [some_role : I'm a task!] *************************************** ok: [MACHINE]

дает:

def v2_playbook_on_task_start(self, task, is_conditional): if(task._role is not None and task._role != self._current_role): self._current_role = task._role self._display.banner("ROLE [" + self._current_role.get_name() + "]", color=C.COLOR_DEBUG) self._task_start(task, prefix='TASK')
 

Horky


Рег
20 Oct, 2006

Тем
72

Постов
183

Баллов
563
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно