16. Управление автоматизацией развертывания и эксплуатации услуги
В Datamart Platform Studio реализована возможность управления автоматизацией развертывания и эксплуатации услуг с использованием шагов и сценариев.
Шаг - структурный элемент сценария, представляющий собой исполняемый код, который выполняется на основании входящего контекста шага, и возвращает, в случае необходимости, исходящий контекст.
Сценарий - объект Datamart Platform Studio, представляющий собой последовательность шагов, совокупность которых выполняет определенный процесс автоматизации, выполняющийся по определенному действию в Datamart Platform Studio (хуку).
16.1. Каталог шагов
В каталоге шагов Datamart Platform Studio отображаются все доступные к использованию шаги, сгруппированные по объектам Datamart Platform Studio и действиям, при которых они могут быть выполнены (см. Рисунок 16.1):
Шаги разделяются на системные и пользовательские:
системные шаги входят в поставку 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):
Примечание
Шаблоны сценариев в каталоге могут создавать и редактировать пользователи в ролями superadmin
и scenario_system_editor
.
16.2.1. Добавление сценария в каталог
Для добавления сценария в каталог сценариев Datamart Platform Studio пользователю с соответствующей ролью необходимо выполнить следующие шаги:
В списке каталога сценариев нажать на кнопку «Добавить шаблон сценария», заполнить и сохранить данные формы (см Рисунок 16.3):
Примечание
Рекомендуется не активировать чек-бокс «Опубликовано» до завершения конфигурации сценария.
Для сценария можно настроить следующее поведение в случае успешного или неуспешного выполнения:
в случае успешного выполнения сценария:
остановка;
переход к конкретному сценарию в цепочке сценариев;
переход к следующему сценарию в цепочке сценариев;
в случае неуспешного выполнения сценария:
остановка;
пропуск (неуспешное выполнение сценария не будет останавливать следующие за ним сценарии и действия);
переход к конкретному сценарию в цепочке сценариев;
переход к следующему сценарию в цепочке сценариев.
Открыть список шагов сценария и добавить шаг (см Рисунок 16.4):
Выбрать один из доступных шагов каталога (см Рисунок 16.5):
Заполнить данные шага, включая контекст и поведение в случае успеха или неуспеха сценария (см Рисунок 16.6):
Для шага можно настроить следующее поведение в случае успешного или неуспешного выполнения:
в случае успешного выполнения шага:
остановка;
переход к выбранному шагу сценария;
переход к следующему шагу сценария;
в случае неуспешного выполнения шага:
остановка (сценарий завершится ошибкой);
пропуск (неуспешное выполнение шага не будет останавливать следующие за ним шаги);
попытка выполнить шаг повторно (число допустимых повторов в случае ошибки можно также указать в настройках шага);
переход к выбранному шагу сценария;
переход к следующему шагу сценария.
Добавить другие шаги шаблона и определить их последовательность при выполнении сценария (см Рисунок 16.7):
В форме редактирования сценария активировать чек-бокс «Опубликовано», чтобы шаблон стал доступен к выборе в списке шаблонов услуги.
16.3. Добавление сценария к услуге
Примечание
Добавление сценариев к услуге доступно пользователям с ролями superadmin
и scenario_editor
.
При добавлении сценария к услуге можно определить инициирующее событие, которое будет автоматически запускать добавленный сценарий.
Список доступных инициирующих событий:
до/после смены статуса услуги;
до/после добавления инсталляции услуги;
до/после запуска плейбука инсталляции;
до/после запуска плейбука или вызова API сервера услуги.
Примечание
Если сценарий выполняется до инициирующего события, то в случае остановки сценария, выполнение события будет остановлено Datamart Platform Studio.
Для добавления сценария к услуге необходимо выполнить следующие действия:
открыть вкладку «Сценарии услуги» и нажать кнопку «Добавить сценарий» (см Рисунок 16.8):
в открывшейся форме выбрать шаблон сценария и инициирующее событие, к которому будет привязан сценарий (см Рисунок 16.9) и нажать кнопку «Далее»:
на следующем шаге, при необходимости, изменить наименование сценария, а также настройки поведения при успешном или неуспешном выполнении сценария, указанные в шаблоне.
Примечание
При создании сценария из шаблона каталога, настройки, последовательность и контекст шагов сценария соответствует шаблону. Перед первым запуском сценария необходимо проверить и изменить в случае необходимости контекст шагов сценария и поведение в случае их успешного или неуспешного выполнения.
16.3.1. Добавление сценария без использования шаблона
Пользователь может добавить к услуге сценарий без использования готового шаблона. Для этого при добавлении сценария необходимо оставить пустым поле «Шаблон» и выполнить все шаги, описанные в разделе Раздел 16.2.1 Добавление сценария в каталог.
16.4. Управление сценариями услуги
Для каждого доступного события услуги можно добавить один или несколько сценариев услуги. Последовательность выполнения сценариев определена их порядком в списке сценариев инициирующего события (см Рисунок 16.10).
Список доступных действий со сценариями услуги:
редактирование настроек сценария;
настройка списка шагов сценария и их последовательности;
удаление сценария;
ручной запуск сценария.