Приоритет выполнения формулы

Приоритет выполнения формул непосредственно влияет на порядок их записи в файл top.sls, который используется серверами управления Salt для определения набора формул, подлежащих применению на устройствах.

Назначение приоритета

Приоритет позволяет администратору управлять очередностью применения формул на устройствах при выполнении highstate.

Задание и изменение приоритета формулы доступно в разделе «Загрузка формул Saltstack» веб-интерфейса «Кабинет администратора»:

  • при первичной загрузке формулы приоритет указывается в форме загрузки;

  • при редактировании существующей формулы приоритет можно изменить в карточке формулы.

Подробнее о категориях приоритета и ограничениях см. в разделе «Управление приоритетом выполнения формулы».

Формирование файла top.sls

Файл top.sls формируется автоматически при активации или деактивации назначения конфигурации через веб-интерфейс или API. Данный процесс применяется только к конфигурациям, не имеющим кастомного (индивидуального) расписания.

Алгоритм формирования:

  1. Система запрашивает из базы данных все активные конфигурации без параметра custom_schedule.

  2. Список применения формул сортируется по порядку применения (приоритету) формул в рамках текущего окружения Salt (по умолчанию base).

  3. Генерируется YAML-файл top.sls в формате:

    base:
      collectionConfig_id:true:
        - match: pillar
        - formula_name
  4. Сформированный файл загружается в S3-совместимое хранилище по пути base/top.sls.

Конфигурации с индивидуальным расписанием (cron, daily, weekly) не включаются в top.sls. Они обрабатываются отдельно через Salt-пиллары, в которых задаются соответствующие планировщики.

Применение на устройстве

Сервер управления Salt получает файл top.sls из S3-совместимого хранилища. Формулы на устройстве применяются в порядке их декларации в top.sls.

Порядок выполнения отдельных состояний (state) внутри формулы определяется правилами компиляции Salt. На поведение этого процесса влияет параметр state_auto_order в конфигурации сервера управления Salt (/etc/salt/master):

  • если state_auto_order: True (значение по умолчанию), Salt автоматически переупорядочивает состояния на основе их зависимостей;

  • если state_auto_order: False, атрибут order в состояниях не заполняется автоматически и не используется для сортировки; в этом случае порядок выполнения состояний является лексикографическим (алфавитным) по имени состояния.

Подробнее о правилах упорядочивания см. в документации Salt: "Understanding State Compiler Ordering".

Обновлено: