Перезапуск прокатки с помощью Ansible handlers
Я хочу запустить ansible playbook, который устанавливает службу и перезапускает ее, если что-то изменилось с момента последнего запуска (более или менее канонический вариант использования для обработчиков ansible).
но я хочу разные параллельность для установки, чем для перезапуска: я хочу установить на всех хостах одновременно, но, если вызывается обработчик "service-restart", я хочу, чтобы это работало на хостах X одновременно.
Я знаю, что это возможно с разных спектаклей разные serial
значения. Но я не вижу, как я могу использовать обработчиков, если я пойду по этому маршруту. И я не могу позволить себе иметь ни одной книги с serial
значение 2
, так как в большинстве случаев ничего не изменится для этой службы.
могут ли обработчики охватывать несколько игр? Или есть другой способ сделать это без взломов?
2 ответов
обработчики-это просто задачи, которые Ansible будет запускать в конце игры, если это необходимо. Учитывая, что они неявно добавляются в конец вашей игры, они будут рассматриваться так же, как и любые другие задачи, насколько параметры, такие как serial
перейти. К сожалению, это означает, что без запроса функции, который принимают разработчики Ansible, вы вряд ли увидите изменение в поведении serial
чтобы поддержать то, что вы пытаетесь сделать.
Я знаю, вы упомянули, что хотите избежать хаков, но это будет единственный способ сделать что-то подобное на данный момент. Не должно быть слишком сложно настроить что-то, что не является основным взломом, например, создать временный файл, чтобы отметить перезапуск:
- hosts: some_hosts
name: install service
serial: 10
- handlers:
- name: schedule restart
command: touch /tmp/restart_flag
- tasks:
- name: install service
action: whatever...
notify: schedule restart
- hosts: some_hosts
name: restart service
serial: 2
- handlers:
- name: perform restart
service: name=foo state=restarted
- tasks:
- name: Delete /tmp/restart_flag. Restart service if file is deleted.
file: path=/tmp/restart_flag state=absent
notify: perform restart