Sobes.tech
Back to questions
Senior
7

Как ускорить выполнение Ansible плейбуков?

Companies where asked
S8 Capital

Answer from AI

sobes.tech AI

Чтобы ускорить выполнение Ansible плейбуков, можно использовать несколько подходов:

  • Параллелизм: увеличить параметр forks в конфигурации Ansible (по умолчанию 5), чтобы запускать больше задач одновременно.
  • Использование async и poll: запускать долгие задачи асинхронно, чтобы не блокировать выполнение плейбука.
  • Оптимизация инвентаря: исключить ненужные хосты, использовать динамический инвентарь для актуальности.
  • Кэширование фактов: использовать fact_caching, чтобы не собирать факты при каждом запуске.
  • Минимизация задач: объединять задачи, избегать избыточных вызовов модулей.
  • Использование check_mode и changed_when: чтобы избежать ненужных изменений и повторных запусков.
  • Использование delegate_to и run_once: для задач, которые нужно выполнить только один раз.

Пример увеличения параллелизма в ansible.cfg:

[defaults]
forks = 20
fact_caching = jsonfile
fact_caching_connection = /tmp/ansible_facts
fact_caching_timeout = 86400

Также стоит профилировать плейбук с помощью ANSIBLE_DEBUG=true и --profile для выявления узких мест.