Управление выполнением playbook: стратегии и многое другое
По умолчанию Ansible выполняет каждую задачу на всех узлах, затронутых playbook, прежде чем начать следующую задачу на любом узле, используя 5 вилок. Если вы хотите изменить это поведение по умолчанию, вы можете использовать другой плагин стратегии, изменить количество вилок или применить один из нескольких ключевых слов уровня playbook, таких как serial.
Выбор стратегии
Поведение по умолчанию, описанное выше, — это линейная стратегия. Ansible предлагает другие стратегии, включая отладочную стратегию (см. также Отладчик playbook) и свободную стратегию, которая позволяет каждому узлу работать до конца playbook так быстро, как только возможно:
- hosts: all strategy: free tasks: ...
Вы можете выбрать другую стратегию для каждого playbook, как показано выше, или установить предпочитаемую стратегию глобально в ansible.cfg, в секции defaults.
[defaults] strategy = free
Все стратегии реализованы как плагины стратегии. Для получения подробной информации о работе каждого плагина стратегии ознакомьтесь с соответствующей документацией.
Установка количества вилок
Если у вас есть достаточная вычислительная мощность и вы хотите использовать больше вилок, вы можете установить их количество в ansible.cfg.
[defaults] forks = 30
или передать его в командной строке: ansible-playbook -f 30 my_playbook.yml.
Использование ключевых слов для управления выполнением
Несколько ключевых слов уровня playbook также влияют на выполнение playbook. Наиболее распространенное из них — serial, которое устанавливает количество, процент или список количества узлов, которыми вы хотите управлять одновременно. Установка serial с любой стратегией указывает Ansible на «пакетную» обработку узлов, завершая playbook для заданного количества или процента узлов, прежде чем начинать следующий «пакет». Это особенно полезно для постепенных обновлений.
Второе ключевое слово, влияющее на выполнение, — throttle, которое также можно использовать на уровне блока и задачи. Это ключевое слово ограничивает количество рабочих процессов до максимального значения, заданного через настройку вилок или serial. Это может быть полезно для ограничения задач, которые могут быть ресурсоемкими или взаимодействовать с API, имеющим ограничения по скорости:
tasks: - command: /path/to/cpu_intensive_command throttle: 1
Другие ключевые слова, влияющие на выполнение playbook, включают ignore_errors, ignore_unreachable, и any_errors_fatal. Обратите внимание, что эти ключевые слова не являются стратегиями. Это директив или параметры уровня playbook.
См. также
- О Playbook
- Введение в Playbook
- Роли
- Организация Playbook по ролям
- Список рассылки пользователей
- У вас есть вопрос? Обратитесь к группе Google!
- irc.freenode.net
- #ansible IRC чат-канал
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.9/user_guide/playbooks_strategies.html