ansible: использование with_items с обработчиком уведомлений
Я хочу передать переменную обработчику уведомлений, но нигде не могу найти здесь, в SO, документах или проблемах в репозитории github, как это сделать. То, что я делаю, это развертывание нескольких веб-приложений, и когда код одного из этих веб-приложений изменяется, он должен перезапустить службу для этого веб-приложения.
Отэтот ТАК вопросЯ получил это на работу, несколько:
- hosts: localhost
tasks:
- name: "task 1"
shell: "echo {{ item }}"
register: "task_1_output"
with_items: [a,b]
- name: "task 2"
debug:
msg: "{{ item.item }}"
when: item.changed
with_items: task_1_output.results
(Поместите его в test.yml и запуститеansible-playbook test.yml -c local
.)
Но это регистрирует результат первой задачи и условно повторяет результат во второй задаче. Моя проблема в том, что это становится грязным, когда у вас есть две или более задач, которые нужно уведомить о второй задаче! Например, перезапустите веб-службу, если либо код был обновлен, либо была изменена конфигурация.
AFAICT, нет способа передать переменную в обработчик. Это было бы чисто исправить для меня. Я обнаружил некоторые проблемы на github, где другие люди сталкиваются с той же проблемой, и предлагаются некоторые синтаксисы, но ни один из них на самом деле не работает.
Включение суб-playbook не будет работать, потому что использованиеwith_items
вместе сinclude
был объявлен устаревшим
В моих пьесах у меня естьsite.yml
который перечисляет роли группы, а затем вgroup_vars
для этой группы я определяю список веб-приложений (включая версии), которые должны быть установлены. Мне кажется, это правильно, потому что таким образом я могу использовать один и тот же сборник пьес для постановки и производства. Но, возможно, единственное решение - определить роль несколько раз и продублировать список ролей для постановки и производства.
Так в чем же здесь мудрость?