Стратегии

Содержание

Стратегии#

В коллекцию ansible.builtin входят следующие расширения стратегий:

  • debug;

  • free;

  • host_pinned;

  • linear.

Описание применения расширений приведено в документе Стратегии.

debug#

Стратегия для пошаговой отладки.

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

Внимание

Стратегия debug используется исключительно в целях разработки и тестирования.

free#

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

Особенности:

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

  • Узлы выполняют задачи в одном и том же порядке, но независимо друг от друга, поэтому на разных узлах они могут находиться на разных этапах выполнения.

  • Ошибки обрабатываются отдельно для каждого узла.

Полезно при работе с разнородными системами или при выполнении долгих независимых операций.

host_pinned#

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

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

Эта стратегия снижает накладные расходы на повторные подключения и обеспечивает стабильное выполнение в нестабильных или ограниченных средах.

linear#

Стратегия выполнения по умолчанию.

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

Такая стратегия обеспечивает синхронное поведение и предсказуемость выполнения. Подходит для конфигураций, где узлы идентичны и выполнение заданий автоматизации на них должно быть синхронным.