16. Управление автоматизацией развертывания и эксплуатации услуги

В Datamart Platform Studio реализована возможность управления автоматизацией развертывания и эксплуатации услуг с использованием шагов и сценариев.

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

Сценарий - объект Datamart Platform Studio, представляющий собой последовательность шагов, совокупность которых выполняет определенный процесс автоматизации, выполняющийся по определенному действию в Datamart Platform Studio (хуку).

16.1. Каталог шагов

В каталоге шагов Datamart Platform Studio отображаются все доступные к использованию шаги, сгруппированные по объектам Datamart Platform Studio и действиям, при которых они могут быть выполнены (см. Рисунок 16.1):

Каталог шагов |prod|

Рисунок 16.1 Каталог шагов Datamart Platform Studio

Шаги разделяются на системные и пользовательские:

  • системные шаги входят в поставку Datamart Platform Studio, полный их список доступен сразу после установки и конфигурации Datamart Platform Studio;

  • пользовательские шаги - шаги, реализуемые пользователями Datamart Platform Studio, которые распространяются посредством репозиториев dms-step-* (аналогично бандлам приложений).

Шаги в каталоге поддерживают версионирование. При обновлении версии шага, в каталоге будут отображаться все доступные версии обновленного шага.

16.1.1. Системные шаги

К системным шагам относятся шаги, выполняющие асинхронные функции в Datamart Platform Studio, которые могут потребоваться при развертывании, установке и эксплуатации некоторых услуг.

Системные шаги в каталоге разрабатываются и редактируются разработчиками Datamart Platform Studio. Системные шаги поставляются в комплекте Datamart Platform Studio и обновляются при ее обновлении.

16.1.2. Пользовательские шаги

В случае необходимости реализации дополнительного функционала, в том числе при интеграции Datamart Platform Studio со внешними системами пользователя, допустима разработка пользовательских шагов и загрузка их в Datamart Platform Studio из репозитория. Пользовательские шаги разрабатываются на любом удобном пользователю языке программирования и могут быть добавлены в Datamart Platform Studio посредством добавления кода шага и мета-информации о нем в хранилище репозиториев в репозитории формата dms-step-*. Взаимодействие пользовательских шагов с объектами Datamart Platform Studio ограничено и производится только в рамках входного контекста и возвращаемых атрибутов.

16.1.2.1. Настройка параметров шага

Файл настройки шага step.yml содержит следующие данные:

  • описание метаданных шага;

  • описание конфигурации контейнера;

  • описание объектов платформы, к которым может быть применен шаг;

  • описание входящего контекста, передаваемого из Datamart Platform Studio в исполняемый код шага;

  • описание выходных данных шага;

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

Блок описания метаданных шага содержит следующие параметры шага:

  • наименование шага;

  • описание шага;

  • техническое наименование шага;

  • версия шага;

  • язык программирования, используемый в шаге;

  • число повторений шага.

В блоке описания конфигурации контейнера должны быть указаны наименование образа и таймаут шага:

Блок описания входящего контекста шага содержит следующие данные:

  • список необходимых атрибутов, используемых в шаге объектов Datamart Platform Studio;

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

Блок описания исходящего контекста шага содержит список исходящих атрибутов объектов шага, которые будут обновлены в Datamart Platform Studio.

Формат описания файла step.yml:

# Описание мета-данных шага
 title: Проверка IP
 description: Функция проверки доступности IP во внешней системе IPAM
 name: ip-check
 version: 1.0.1
 language: ruby
 retry_count: 3

 # Описании конфигурации контейнера для запуска функции
 container:
   image: "ruby:3.0"
   timeout: 15
   run: ruby handler.rb # передача параметра context добавляется автоматически на уровне вызова

 # Перечень объектов платформы, к которым может быть применима данная функция
 subjects:
   - server
   - data_center

 # Характеристики входящего контекста
 context:
   common:
     - id
     - name
     - status
   properties: # настройки, передаваемые из студии
     global: # глобальные переменные
       - platform::ipam
       - platform::dns
     installation: # настройки для модели, в примере — installation, должны иметь такой же name среди связанных properties
       - nexus
       - kafka_url
   server:
     - ip
   data_center:
     - consumed_public_ips
     - public_ips_limitation
   installation:
     - version

 # Описание ожидаемых выходных результатов
 outputs:
   common:
     - status
   server:
     - ip
   data_center:
     - public_ips_limitation

 # Перечень хуков (событий) в которых может вызываться степ (any — любые)
 hooks:
   - any

16.2. Каталог сценариев

В Datamart Platform Studio реализован каталог шаблонов сценариев, в каждом из которых могут быть использованы один или несколько шагов. Любой опубликованный шаблон сценария в каталоге может быть назначен одной или нескольким услугам в Datamart Platform Studio (см Рисунок 16.2):

Каталог сценариев |prod|

Рисунок 16.2 Каталог сценариев Datamart Platform Studio

Примечание

Шаблоны сценариев в каталоге могут создавать и редактировать пользователи в ролями superadmin и scenario_system_editor.

16.2.1. Добавление сценария в каталог

Для добавления сценария в каталог сценариев Datamart Platform Studio пользователю с соответствующей ролью необходимо выполнить следующие шаги:

  1. В списке каталога сценариев нажать на кнопку «Добавить шаблон сценария», заполнить и сохранить данные формы (см Рисунок 16.3):

Форма создания сценария

Рисунок 16.3 Форма создания сценария

Примечание

Рекомендуется не активировать чек-бокс «Опубликовано» до завершения конфигурации сценария.

Для сценария можно настроить следующее поведение в случае успешного или неуспешного выполнения:

  • в случае успешного выполнения сценария:

    • остановка;

    • переход к конкретному сценарию в цепочке сценариев;

    • переход к следующему сценарию в цепочке сценариев;

  • в случае неуспешного выполнения сценария:

    • остановка;

    • пропуск (неуспешное выполнение сценария не будет останавливать следующие за ним сценарии и действия);

    • переход к конкретному сценарию в цепочке сценариев;

    • переход к следующему сценарию в цепочке сценариев.

  1. Открыть список шагов сценария и добавить шаг (см Рисунок 16.4):

Добавление шага к сценарию

Рисунок 16.4 Добавление шага к сценарию

  1. Выбрать один из доступных шагов каталога (см Рисунок 16.5):

Выбор шага из каталога

Рисунок 16.5 Выбор шага из каталога

  1. Заполнить данные шага, включая контекст и поведение в случае успеха или неуспеха сценария (см Рисунок 16.6):

Форма добавления шага к сценарию

Рисунок 16.6 Форма добавления шага к сценарию

Для шага можно настроить следующее поведение в случае успешного или неуспешного выполнения:

  • в случае успешного выполнения шага:

    • остановка;

    • переход к выбранному шагу сценария;

    • переход к следующему шагу сценария;

  • в случае неуспешного выполнения шага:

    • остановка (сценарий завершится ошибкой);

    • пропуск (неуспешное выполнение шага не будет останавливать следующие за ним шаги);

    • попытка выполнить шаг повторно (число допустимых повторов в случае ошибки можно также указать в настройках шага);

    • переход к выбранному шагу сценария;

    • переход к следующему шагу сценария.

  1. Добавить другие шаги шаблона и определить их последовательность при выполнении сценария (см Рисунок 16.7):

Изменение порядка шагов в сценарии

Рисунок 16.7 Изменение порядка шагов в сценарии

  1. В форме редактирования сценария активировать чек-бокс «Опубликовано», чтобы шаблон стал доступен к выборе в списке шаблонов услуги.

16.3. Добавление сценария к услуге

Примечание

Добавление сценариев к услуге доступно пользователям с ролями superadmin и scenario_editor.

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

Список доступных инициирующих событий:

  • до/после смены статуса услуги;

  • до/после добавления инсталляции услуги;

  • до/после запуска плейбука инсталляции;

  • до/после запуска плейбука или вызова API сервера услуги.

Примечание

Если сценарий выполняется до инициирующего события, то в случае остановки сценария, выполнение события будет остановлено Datamart Platform Studio.

Для добавления сценария к услуге необходимо выполнить следующие действия:

  1. открыть вкладку «Сценарии услуги» и нажать кнопку «Добавить сценарий» (см Рисунок 16.8):

Добавления сценария к услуге

Рисунок 16.8 Добавления сценария к услуге

  1. в открывшейся форме выбрать шаблон сценария и инициирующее событие, к которому будет привязан сценарий (см Рисунок 16.9) и нажать кнопку «Далее»:

Выбор шаблона и инициирующего события

Рисунок 16.9 Выбор шаблона и инициирующего события

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

Примечание

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

16.3.1. Добавление сценария без использования шаблона

Пользователь может добавить к услуге сценарий без использования готового шаблона. Для этого при добавлении сценария необходимо оставить пустым поле «Шаблон» и выполнить все шаги, описанные в разделе Раздел 16.2.1 Добавление сценария в каталог.

16.4. Управление сценариями услуги

Для каждого доступного события услуги можно добавить один или несколько сценариев услуги. Последовательность выполнения сценариев определена их порядком в списке сценариев инициирующего события (см Рисунок 16.10).

Список доступных действий со сценариями услуги:

  • редактирование настроек сценария;

  • настройка списка шагов сценария и их последовательности;

  • удаление сценария;

  • ручной запуск сценария.

Список доступных действий со сценарием услуги

Рисунок 16.10 Список доступных действий со сценарием услуги