На скольких хостах Ansible по умолчанию выполняет задачи параллельно?

«На скольких хостах Ansible по умолчанию выполняет задачи параллельно?» — вопрос из категории Ansible, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

По умолчанию Ansible выполняет задачи параллельно на 5 хостах одновременно. Это управляется параметром forks.

Зачем это нужно? Параллельное выполнение ускоряет работу с большим количеством серверов, но значение нужно подбирать, чтобы не перегрузить управляющую ноду и сеть.

Как изменить лимит параллелизма?

  1. В конфигурационном файле ansible.cfg:

    [defaults]
    forks = 20
  2. Через аргумент командной строки -f или --forks:

    ansible-playbook site.yml -f 10
  3. Через переменную окружения ANSIBLE_FORKS:

    export ANSIBLE_FORKS=15
    ansible-playbook site.yml

Стратегия выполнения: Помимо forks, поведение можно тонко настроить с помощью стратегий (например, linear, free). Стратегия free позволяет хостам не ждать друг друга, что ещё больше ускоряет выполнение на неоднородном железе.