Sobes.tech
Junior — Middle

Wie kann man die Ausführung von Aufgaben in Ansible modernisieren, um sie gleichzeitig auf mehreren Hosts auszuführen anstatt sequenziell?

sobes.tech KI

Antwort von AI

В Ansible по умолчанию задачи выполняются параллельно на нескольких хостах, но внутри одного хоста — последовательно. Если вы хотите запускать несколько задач одновременно на одном хосте, можно использовать модуль async и параметр poll.

Пример запуска задачи асинхронно:

- name: Запуск долгой задачи асинхронно
  command: /path/to/long_task.sh
  async: 3600       # максимальное время выполнения в секундах
  poll: 0           # не ждать завершения задачи

Это позволит запустить задачу и сразу перейти к следующей, не дожидаясь завершения.

Если же речь о параллельном выполнении задач на разных хостах, то это стандартное поведение Ansible, которое можно настроить через параметр forks в конфигурации, увеличивая количество одновременных подключений.

Пример настройки количества параллельных подключений:

[defaults]
forks = 20

Таким образом, для одновременного запуска задач на нескольких хостах нужно увеличить forks, а для параллельного запуска задач на одном хосте — использовать async и poll.