Интеграция с внешними системами
По желанию Заказчика возможна настройка интеграции Платформы с системами Заказчика.
Под интеграциями понимается синхронизация информации о пользовательских объектах Платформы с системами (например, CMDB, AD, DNS и прочими), развёрнутыми заказчиком самостоятельно.
Интеграция осуществляется со стороны Платформы посредством вызова REST API специальных сервисов. Специальные сервисы проксируют запросы в сторонние CMDB, AD, DNS соответственно.
Платформа обеспечивает доставку актуальной информации в специальные сервисы с возможной небольшой задержкой (позволяющей, например, без дискомфорта начать вручную использовать по DNS имени созданную вручную ВМ). Специальные сервисы разрабатываются под инфраструктуру Заказчика так, чтобы транслировать вызовы наших API в понятные системам Заказчика форматы и передавать их по корректным адресам.
Платформа выполняет логирование интеграции, логи доступны администраторам по общим правилам доступа к логам в Платформе.
Основные ограничения:
-
Для работы синхронизации CMDB требуется Consul (DCS KV, распределённое хранилище данных типа «ключ»-«значение»). Он используется при синхронизации отправки данных в соответствующий специальный сервис.
-
Для обновления информации в целевых системах в некоторых случаях недостаточно изменения синхронизируемых данных. К таким случаям относятся:
- Изменение заголовка проекта в IAM.
- Изменение метаданных корневого диска.
- Изменение параметров сети (например, IP-адресов).
-
При недоступности специальных сервисов синхронизации или других проблемах обработки изменений синхронизация может не выполниться.
-
Интеграция Kubernetes Ingress с DNS не реализована.
Отправляет данные о ВМ, включающую информацию о дисках и сетях ВМ.
Структурно информация представляет собой один словарь. При создании ВМ словарь отправляется со всеми данными. При изменениях каких-либо объектов, влияющих на информацию о ВМ, посылаемый словарь может содержать только данные, связанные с изменившимися объектами. При удалении ВМ отправляется обновление информации о ВМ с соответствующим статусом.
На информацию о ВМ оказывают влияние следующие действия пользователей:
- Создание / удаление ВМ.
- Изменение объема ВМ.
- Включение / выключение ВМ.
- Подключение / отключение / замена диска.
- Изменение объема диска.
- Подключение / отключение сетевого интерфейса.
- Переименование сетевого интерфейса, в том числе приватного DNS-имени.
- Создание / изменение / масштабирование / удаление объектов PaaS.
Ниже в таблице 1 под настройками понимаются настройки системы синхронизации, доступные к конфигурированию на этапах развёртывания и сопровождения.
Параметр | Описание |
|---|---|
Status | Статус ВМ на гипервизоре. Рассчитывается маппингом по настроечной таблице исходя из состояния ВМ на гипервизоре |
PlatformID | Идентификатор ВМ в облаке |
Project | Заголовок (название) проекта ВМ (из IAM) |
Contact | Имя пользователя (из Keystone), создавшего ВМ, с заданным в настройках суффиксом |
Cluster | Зона доступности (availability zone) ВМ |
RAM | Объём оперативной памяти ВМ, округлённый до ГБ в меньшую сторону |
CPUCores | Количество процессоров ВМ |
CPUSockets | Количество сокетов ВМ |
HDDCurrentValue | Объём всех дисков, подключенных к ВМ, плюс размер корневого эфемерного диска, если используется |
SoftwareName | Значение метаданных |
j.network | Информация о сетевых интерфейсах ВМ. Массив. Описание см. ниже в таблице 2 |
NetworkName | Доменное имя первого сетевого интерфейса ВМ (
|
InstanceType | Принадлежность ВМ тому или иному контуру сети. Рассчитывается маппингом по настроечной таблице исходя из |
ManagementIP | Первый приватный адрес первого сетевого интерфейса ВМ |
Параметр | Описание |
|---|---|
NetworkInterfaceIP | IP-адрес первого IPv4 сетевого интерфейса в приватной сети |
NetworkInterfaceMAC | MAC-адрес интерфейса |
NetworkInterfaceName | Имя сетевого интерфейса (имя в OpenStack) |
NetworkInterfaceVLAN | Рассчитывается как |
NetworkInterfaceMask | Маска сети |
Статус ВМ определяется в зависимости от статуса объекта Nova instance (поле OS-EXT-STS:vm_state). Описание приведено ниже в таблице 3.
Статус объекта Nova instance | Результирующий статус |
|---|---|
active | В работе |
stopped | Остановлен |
shelved | Остановлен |
shelved_offloaded | Остановлен |
deleted | Остановлен |
При любых других статусах выставляется статус «В работе». Все статусы и их соответствия, а также значение по умолчанию настраиваются в конфигурационном файле.
Тип запроса: POST, путь /devicesoftwarehostvms
Запрос посылается после создания ВМ, тело запроса имеет всю информацию о дисках и сетях созданной ВМ.
{"devicesoftwarehostvm": {"Status": "В работе","PlatformID": "1AAAAAA1-2222-BBBB-FFFF-999999999999","Project": "demo","Contact": "user@example.ru","Cluster": "nova","RAM": 1,"CPUCores": 1,"CPUSockets": 1,"HDDCurrentValue": 1,"SoftwareName": "Linux","j.network": [{"NetworkInterfaceIP": "10.0.0.7","NetworkInterfaceMAC": "fa:16:3e:1a:28:69","NetworkInterfaceName": "","NetworkInterfaceVLAN": "VLAN1085","NetworkInterfaceMask": "255.255.255.192"}],"NetworkName": "demo-test-insta.skf.","InstanceType": "TEST","ManagementIP": "10.0.0.7"}}
Описание параметров тела запроса приведено ниже в таблице 4.
Поле | Тип | Обязательность | Описание |
|---|---|---|---|
devicesoftwarehostvm | object | Да | Информация о ВМ. Посылаемый словарь может содержать только данные, связанные с изменившимися объектами. При удалении ВМ отправляются только |
Status | string | Нет | Текущий статус ВМ. Например: «В работе», «Остановлен» |
PlatformID | string | Да | Основной идентификатор ВМ в облаке. Представляется собой UUID, соответствующий |
Project | string | Нет | Имя проекта, которому принадлежит ВМ |
Contact | string | Нет | Имя пользователя, создавшего ВМ, может иметь формат email-адреса |
Cluster | string | Нет | Зона доступности (availability zone) кластера |
RAM | integer | Нет | Объём оперативной памяти, выделенной для ВМ, округлённый до ГБ в меньшую сторону. Формат — гигабайты |
CPUCores | integer | Нет | Количество выделенных для ВМ процессорных ядер |
CPUSockets | integer | Нет | Количество выделенных для ВМ виртуальных сокетов |
HDDCurrentValue | integer | Нет | Объем выделенного для ВМ дискового пространства. Формат — гигабайты |
SoftwareName | string | Нет | Название ПО, запущенного на ВМ. Например, тип операционной системы: Windows, Linux. Может включать в себя любые символы, начинается с заглавной буквы |
j.network | array[object] | Нет | Список данных (IP, MAC, имя, VLAN, маска) по каждому сетевому интерфейсу. В массиве содержится столько элементов, сколько сетевых интерфейсов у ВМ, каждый элемент соответствует данным об одном сетевом интерфейсе |
NetworkInterfaceIP | string | Да | IP-адрес первого IPv4 сетевого интерфейса в приватной сети |
NetworkInterfaceMAC | string | Да | MAC-адрес первого сетевого интерфейса. Используется поле |
NetworkInterfaceName | string | Да | Имя первого сетевого интерфейса. Используется поле |
NetworkInterfaceVLAN | string | Да | Строковое значение, VLAN-tag виртуальной сети, в которой расположен сетевой интерфейс. Формат — |
NetworkInterfaceMask | string | Да | Маска первого сетевого интерфейса. Вычисляется на основе CIDR виртуальной подсети, в которой расположен сетевой интерфейс |
NetworkName | string | Нет | Доменное имя первого сетевого интерфейса |
InstanceType | string | Нет | Тип ВМ, например |
ManagementIP | string | Нет | Первый приватный адрес первого сетевого интерфейса ВМ. Формат — строка IPv4 |
В ответе метода используются следующие HTTP-коды:
- 200 — данные успешно отправлены.
Тип запроса: PUT, путь /devicesoftwarehostvms/{platform_id}
Запрос отправляется при каких-либо изменениях в конфигурации ВМ, соответствующей platform_id. В том числе об удалении ВМ, в таком случае в теле запроса будут только PlatformID и Status, соответствующий удалению.
curl -X PUT "https://<hostname>/devicesoftwarehostvms/27f14fac-5952-48c1-8d5c-1545d4d2e6b2" -H "accept: application/json"
В методе используются параметры, перечисленные ниже в таблице 5.
Поле | Тип | Обязательность | Описание |
|---|---|---|---|
platform_id | string | Да | Идентификатор ВМ в облаке |
В ответе метода используются следующие HTTP-коды:
- 200 — данные успешно отправлены.
- 404 — указанной ВМ не существует.
{"devicesoftwarehostvm": {"PlatformID": "1AAAAAA1-2222-BBBB-FFFF-999999999999","Status": "В работе","j.network": [{"NetworkInterfaceIP": "10.0.0.7","NetworkInterfaceMAC": "fa:16:3e:1a:28:69","NetworkInterfaceName": "","NetworkInterfaceVLAN": "VLAN1085","NetworkInterfaceMask": "255.255.255.192"}],"NetworkName": "demo-test-insta.skf.","InstanceType": "TEST","ManagementIP": "10.0.0.7"}}
{"devicesoftwarehostvm": {"PlatformID": "27f14fac-5952-48c1-8d5c-1545d4d2e6b2","Status": "Остановлен"}}
Синхронизирует информацию о ВМ в Active Directory (AD).
Структурно информация, передаваемая в AD, состоит из двух словарей с данными о группе (таблица 6) и сервере (таблица 7). При создании ВМ информация создается в AD, а при удалении — удаляется из AD. При изменении Доменного имени (FQDN) — удаляется старая информация и создается новая.
На информацию AD оказывают влияние следующие действия пользователя:
- Создание / удаление ВМ.
- Подключение / отключение сетевого интерфейса.
- Изменение приватного DNS-имени сетевого интерфейса.
Параметр | Описание |
|---|---|
hostname | Доменное имя первого сетевого интерфейса ВМ (см. раздел CMDB) |
operating_system | Операционная система. Рассчитывается маппингом по настроечной таблице исходя из метаданных |
members | Список, единственный элемент которого — имя пользователя (из Keystone), создавшего ВМ, с заданным в настройках суффиксом |
Параметр | Описание |
|---|---|
hostname | Доменное имя (FQDN) первого сетевого интерфейса ВМ (см. раздел CMDB) |
operating_system | Операционная система. Рассчитывается маппингом по настроечной таблице исходя из метаданных |
Сервис предоставляет методы создания/удаления ВМ и групп AD:
- Создание хоста включает в себя создание группы AD и создание ВМ, которая будет входить в эту группу.
- Удаление хоста включает в себя удаление группы AD и удаление ВМ, которая входила в эту группу.
Все строки в телах запросов имеют формат Unicode.
Тип запроса: POST, путь /login
Авторизация для получения Bearer-токена, который нужен для авторизации остальных запросов.
{"username": "login","password": "password"}
Описание параметров тела запроса приведено ниже в таблице 8.
Поле | Тип | Обязательность | Описание |
|---|---|---|---|
username | string | Да | Имя пользователя / логин |
password | string | Да | Пароль пользователя |
В ответе метода используются следующие HTTP-коды:
- 200 — токен получен.
- 400 — некорректный запрос.
- 401 — отказано в доступе.
{"token": "1mx6L2L7AMdEsyKy5LW9s8gt6mBxdICwosVn5sjhbwykOoQJFUru6752dwsj2THN"}
Тип запроса: POST, путь /api/v1/groups
Создать группу AD для ВМ. Для каждой ВМ создается своя собственная группа.
{"hostname": "project-vm.example.","operating_system": "Linux","members": ["member@example.ru"]}
Описание параметров тела запроса приведено ниже в таблице 9.
Поле | Тип | Обязательность | Описание |
|---|---|---|---|
hostname | string | Да | Доменное имя первого сетевого интерфейса ВМ вида |
operating_system | string | Да | Имя операционной системы, установленной на хосте. Может включать в себя любые символы |
members | array[string] | Да | Список, единственный элемент которого — имя пользователя, создавшего ВМ. Может иметь формат email-адреса |
В ответе метода используются следующие HTTP-коды:
- 200 — группа создана.
Тип запроса: DELETE, путь /api/v1/groups/{hostname}
Удаление группы AD, за которым последует удаление ВМ, которая входила в эту группу.
curl -X DELETE "https://<hostname>/api/v1/groups/computer1" -H "accept: application/json"
В методе используются параметры, перечисленные ниже в таблице 10.
Поле | Тип | Обязательность | Описание |
|---|---|---|---|
hostname | string | Да | Доменное имя (FQDN) группы, которую нужно удалить. Имеет вид |
В ответе метода используются следующие HTTP-коды:
- 200 — удаление группы выполнено.
- 404 — указанной группы не существует.
Тип запроса: POST, путь /api/v1/computer
Создание ВМ, перед которым следовало создание группы AD для данной ВМ.
{"hostname": "project-vm.example.","operating_system": "Linux"}
Описание параметров тела запроса приведено ниже в таблице 11.
Поле | Тип | Обязательность | Описание |
|---|---|---|---|
hostname | string | Да | Доменное имя первого сетевого интерфейса ВМ вида |
operating_system | string | Да | Имя операционной системы, установленной на хосте. Может включать в себя любые символы |
В ответе метода используются следующие HTTP-коды:
- 200 — создание ВМ выполнено.
Тип запроса: DELETE, путь /api/v1/computer/{hostname}
curl -X DELETE "https://<hostname>/api/v1/computer/computer1" -H "accept: */*"
В методе используются параметры, перечисленные ниже в таблице 12.
Поле | Тип | Обязательность | Описание |
|---|---|---|---|
hostname | string | Да | Доменное имя ВМ, которую нужно удалить. Имеет вид |
В ответе метода используются следующие HTTP-коды:
- 200 — удаление ВМ выполнено.
- 404 — указанной ВМ не существует.
Синхронизирует информацию в целевом DNS о ВМ и балансировщиках нагрузки.
Структурно информация, передаваемая в целевые DNS, состоит из словаря (см. ниже таблицу 13). При создании объекта создается DNS-информация, при удалении — удаляется. При изменении — удаляется и создается новая.
Параметр | Описание |
|---|---|
fqdn | Доменное имя (FQDN) первого сетевого интерфейса ВМ (см. раздел CMDB) |
ip | IP-адрес первого IPv4 сетевого интерфейса |
Информация DNS синхронизируется:
-
Для всех сетевых интерфейсов ВМ:
- Не принадлежащих настраиваемому списку проектов.
-
Для балансировщиков нагрузки LBaaS и Octavia:
- Созданных на frontend (с заданным пользователем DNS-именем, отличным от стандартного
host-<IP>). - Балансировщики нагрузки DBaaS.
- Балансировщики нагрузки k8s API KaaS.
- Созданных на frontend (с заданным пользователем DNS-именем, отличным от стандартного
На передаваемую в целевые DNS информацию оказывают влияние следующие действия пользователя:
- Создание / удаление ВМ.
- Подключение / отключение сетевых интерфейсов.
- Изменение DNS-имени сетевых интерфейсов.
- Создание / удаление балансировщика нагрузки.
- Изменение DNS-имени VIP сетевого интерфейса балансировщика нагрузки.
- Создание / масштабирование / удаление PaaS объектов (например, кластеров/инстансов DBaaS, кластеров KaaS).
Тип запроса: POST, путь /login
Авторизация для получения Bearer-токена, который нужен для авторизации остальных запросов.
{"username": "login","password": "password"}
Описание параметров тела запроса приведено ниже в таблице 14.
Поле | Тип | Обязательность | Описание |
|---|---|---|---|
username | string | Да | Имя пользователя / логин |
password | string | Да | Пароль пользователя |
В ответе метода используются следующие HTTP-коды:
- 200 — токен получен.
- 400 — некорректный запрос.
- 401 — отказано в доступе.
{"token": "1mx6L2L7AMdEsyKy5LW9s8gt6mBxdICwosVn5sjhbwykOoQJFUru6752dwsj2THN"}
Тип запроса: POST, путь /api/v1/rr/A/
Запрос для создания записи типа A. Для ВМ используется первый адрес первого сетевого интерфейса, для балансировщика нагрузки — первый адрес VIP порта балансировщика.
{"name": "project-vm.example.","value": "192.168.193.7"}
Описание параметров тела запроса приведено ниже в таблице 15.
Поле | Тип | Обязательность | Описание |
|---|---|---|---|
name | string | Да | Доменное имя сетевого интерфейса объекта вида |
value | string | Да | IPv4-адрес, который соответствует доменному имени из параметра |
В ответе метода используются следующие HTTP-коды:
- 200 — запись типа A создана.
- 400 — запись уже существует.
Тип запроса: DELETE, путь /api/v1/rr/A/{fqdn}
Запрос для удаления записи типа A, соответствующей доменному имени fqdn.
curl -X DELETE "https://<hostname>/api/v1/rr/A/site1.example.ru." -H "accept: application/json"
В методе используются параметры, перечисленные ниже в linkto(#tab_del_rra_params)[text=таблице %number]}.
Поле | Тип | Обязательность | Описание |
|---|---|---|---|
fqdn | string | Да | Доменное имя, для которого нужно удалить соответствующую запись типа A |
В ответе метода используются следующие HTTP-коды:
- 200 — удаление записи типа A выполнено.
- 404 — записи нет / уже удалена.