Переход к следующей задаче в ansible, не дожидаясь, пока другие хосты завершат эту задачу

#ansible #wait #ansible-playbook

#подождите #ansible

Вопрос:

Итак, я заметил, что в моих сборниках игр ansible, если я нацеливаю несколько хостов на один и тот же сборник, каждая задача должна быть завершена для всех хостов, прежде чем она перейдет к следующей задаче.

Возможно ли определить сценарий таким образом, чтобы задача по завершении немедленно запускала следующую задачу, не дожидаясь завершения задачи на всех других хостах?

Ответ №1:

Этим поведением Ansible можно управлять с помощью плагинов стратегии.

По умолчанию Ansible использует линейный плагин:

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

Другая доступная стратегия free :

Выполнение задачи выполняется синхронно для каждого пакета хостов, как определено serial (по умолчанию all ). До предела разветвления хосты будут выполнять каждую задачу одновременно, а затем следующую серию хостов, пока пакет не будет завершен, прежде чем перейти к следующей задаче.

Установите стратегию следующим образом:

 - hosts: all
  strategy: free
  tasks:
  

Если невозможно использовать free стратегию, вы можете установить пакеты с serial помощью директивы.