Структура управления#
Event-Driven Ansible используется для автоматизации реакций на определенные события.
Типичный порядок обработки событий в Astra Automation показан на схеме:
Обработка событий происходит следующим образом:
Event-Driven Ansible controller (далее – контроллер EDA) получает из источника уведомление об изменениях.
Контроллер EDA анализирует произошедшее изменение и принимает решение о реагировании на событие.
Если реакция на событие предполагает запуск Ansible playbook, контроллер EDA запускает его в Automation Controller.
Automation Controller исполняет playbook, тем самым реализуя реакцию платформы на событие, произошедшее во внешней системе.
Для обработки событий контроллер EDA использует компоненты, показанные на схеме:
Сюда входят:
Проекты (projects) – наборы сводов правил, хранящихся в одном репозитории системы контроля версий Git.
Своды правил (rulebooks) – файлы формата YAML, содержащие список наборов правил и сведения о среде принятия решений.
Наборы правил (ruleset) – списки записей о том, что считать событиями и как на них реагировать.
Среды принятия решений (DE, decision environment) – это контейнер, аналогичный среде исполнения, который включает все зависимости, коллекции и настройки, необходимые для выполнения сводов правил.
Полномочия (credentials) – сведения, позволяющие получать доступ к сторонним ресурсам, например, репозиториям с кодом проектов, Automation Controller и так далее.
Перечисленные компоненты взаимодействуют между собой следующим образом:
Пользователь загружает проект, содержащий своды правил, в контроллер EDA и, при необходимости, загружает образ DE для этого проекта.
Пользователь активизирует необходимый свод правил в указанном DE.
DE периодически выполняет следующие проверки:
состояние каждого источника событий, указанного в наборах правил;
выполнение условий, означающих наступление события.
Если условия наступления события выполнены, контроллер EDA запускает соответствующий обработчик.
Обработчик может, например, потребовать выполнение playbook в Automation Controller. В этом случае контроллер Event-Driven Ansible использует для подключения к Automation Controller API полномочие соответствующего типа.