VK Private Cloud logo
Помощь
Обновлена 17 июля 2026 г. в 15:55

Интеграция с внешними системами

По желанию Заказчика возможна настройка интеграции Платформы с системами Заказчика.

Под интеграциями понимается синхронизация информации о пользовательских объектах Платформы с системами (например, CMDB, AD, DNS и прочими), развёрнутыми заказчиком самостоятельно.

Интеграция осуществляется со стороны Платформы посредством вызова REST API специальных сервисов. Специальные сервисы проксируют запросы в сторонние CMDB, AD, DNS соответственно.

Платформа обеспечивает доставку актуальной информации в специальные сервисы с возможной небольшой задержкой (позволяющей, например, без дискомфорта начать вручную использовать по DNS имени созданную вручную ВМ). Специальные сервисы разрабатываются под инфраструктуру Заказчика так, чтобы транслировать вызовы наших API в понятные системам Заказчика форматы и передавать их по корректным адресам.

Платформа выполняет логирование интеграции, логи доступны администраторам по общим правилам доступа к логам в Платформе.

Ограничения существующей реализации

Основные ограничения:

  1. Для работы синхронизации CMDB требуется Consul (DCS KV, распределённое хранилище данных типа «ключ»-«значение»). Он используется при синхронизации отправки данных в соответствующий специальный сервис.

  2. Для обновления информации в целевых системах в некоторых случаях недостаточно изменения синхронизируемых данных. К таким случаям относятся:

    • Изменение заголовка проекта в IAM.
    • Изменение метаданных корневого диска.
    • Изменение параметров сети (например, IP-адресов).
  3. При недоступности специальных сервисов синхронизации или других проблемах обработки изменений синхронизация может не выполниться.

  4. Интеграция Kubernetes Ingress с DNS не реализована.

CMDB

Отправляет данные о ВМ, включающую информацию о дисках и сетях ВМ.

Структурно информация представляет собой один словарь. При создании ВМ словарь отправляется со всеми данными. При изменениях каких-либо объектов, влияющих на информацию о ВМ, посылаемый словарь может содержать только данные, связанные с изменившимися объектами. При удалении ВМ отправляется обновление информации о ВМ с соответствующим статусом.

На информацию о ВМ оказывают влияние следующие действия пользователей:

  • Создание / удаление ВМ.
  • Изменение объема ВМ.
  • Включение / выключение ВМ.
  • Подключение / отключение / замена диска.
  • Изменение объема диска.
  • Подключение / отключение сетевого интерфейса.
  • Переименование сетевого интерфейса, в том числе приватного DNS-имени.
  • Создание / изменение / масштабирование / удаление объектов PaaS.

Информация о ВМ

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

Таблица 1 — Параметры ВМ

Параметр

Описание

Status

Статус ВМ на гипервизоре. Рассчитывается маппингом по настроечной таблице исходя из состояния ВМ на гипервизоре OS-EXT-STS:vm_state или факта удаленности ВМ

PlatformID

Идентификатор ВМ в облаке

Project

Заголовок (название) проекта ВМ (из IAM)

Contact

Имя пользователя (из Keystone), создавшего ВМ, с заданным в настройках суффиксом

Cluster

Зона доступности (availability zone) ВМ

RAM

Объём оперативной памяти ВМ, округлённый до ГБ в меньшую сторону

CPUCores

Количество процессоров ВМ

CPUSockets

Количество сокетов ВМ

HDDCurrentValue

Объём всех дисков, подключенных к ВМ, плюс размер корневого эфемерного диска, если используется

SoftwareName

Значение метаданных os_full_name корневого диска. В случае её отсутствия — os_type. В случае и её отсутствия — значение из настройки. Должно начинаться с заглавной буквы

j.network

Информация о сетевых интерфейсах ВМ. Массив. Описание см. ниже в таблице 2

NetworkName

Доменное имя первого сетевого интерфейса ВМ (hostname) без конечной точки (FQDN). Является строкой в формате <ЗАГОЛОВОК_ПРОЕКТА>-<DNS_ИМЯ_ИНТЕРФЕЙСА>.<DNS_ДОМЕН>.:

  • Заголовок проекта берется из IAM.
  • Длина имени интерфейса до первой точки обрезается до 15 символов.
  • Домен берется из настроек сети сетевого интерфейса

InstanceType

Принадлежность ВМ тому или иному контуру сети. Рассчитывается маппингом по настроечной таблице исходя из provider:segmentation_id сети первого сетевого интерфейса ВМ

ManagementIP

Первый приватный адрес первого сетевого интерфейса ВМ

Информация о сетевом интерфейсе ВМ

Таблица 2 — Параметры массива j.network

Параметр

Описание

NetworkInterfaceIP

IP-адрес первого IPv4 сетевого интерфейса в приватной сети

NetworkInterfaceMAC

MAC-адрес интерфейса

NetworkInterfaceName

Имя сетевого интерфейса (имя в OpenStack)

NetworkInterfaceVLAN

Рассчитывается как VLAN_ + provider:segmentation_id

NetworkInterfaceMask

Маска сети

Определение статуса ВМ

Статус ВМ определяется в зависимости от статуса объекта Nova instance (поле OS-EXT-STS:vm_state). Описание приведено ниже в таблице 3.

Таблица 3 — Статусы объектов

Статус объекта Nova instance

Результирующий статус

active

В работе

stopped

Остановлен

shelved

Остановлен

shelved_offloaded

Остановлен

deleted

Остановлен

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

Описание методов API

Отправить информацию о ВМ

Тип запроса: POST, путь /devicesoftwarehostvms

Запрос посылается после создания ВМ, тело запроса имеет всю информацию о дисках и сетях созданной ВМ.

Пример тела запроса (body request)
{  "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.

Таблица 4 — Описание параметров тела запроса для метода /devicesoftwarehostvms

Поле

Тип

Обязательность

Описание

devicesoftwarehostvm

object

Да

Информация о ВМ. Посылаемый словарь может содержать только данные, связанные с изменившимися объектами. При удалении ВМ отправляются только PlatformID и Status, соответствующий удалению

Status

string

Нет

Текущий статус ВМ. Например: «В работе», «Остановлен»

PlatformID

string

Да

Основной идентификатор ВМ в облаке. Представляется собой UUID, соответствующий instance id из сервиса Nova

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-адрес первого сетевого интерфейса. Используется поле mac_address объекта Neutron port

NetworkInterfaceName

string

Да

Имя первого сетевого интерфейса. Используется поле name объекта Neutron port, может не совпадать с DNS-именем

NetworkInterfaceVLAN

string

Да

Строковое значение, VLAN-tag виртуальной сети, в которой расположен сетевой интерфейс. Формат — VLAN<vlan_tag>. Используется поле provider:segmentation_id объекта Neutron network

NetworkInterfaceMask

string

Да

Маска первого сетевого интерфейса. Вычисляется на основе CIDR виртуальной подсети, в которой расположен сетевой интерфейс

NetworkName

string

Нет

Доменное имя первого сетевого интерфейса

InstanceType

string

Нет

Тип ВМ, например TEST, Dev, UNKNOWN, Staging\Preprod, Prod

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.

Таблица 5 — Описание параметров (path) для метода /devicesoftwarehostvms/{platform_id}

Поле

Тип

Обязательность

Описание

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": "Остановлен"  }}

AD

Синхронизирует информацию о ВМ в Active Directory (AD).

Структурно информация, передаваемая в AD, состоит из двух словарей с данными о группе (таблица 6) и сервере (таблица 7). При создании ВМ информация создается в AD, а при удалении — удаляется из AD. При изменении Доменного имени (FQDN) — удаляется старая информация и создается новая.

На информацию AD оказывают влияние следующие действия пользователя:

  • Создание / удаление ВМ.
  • Подключение / отключение сетевого интерфейса.
  • Изменение приватного DNS-имени сетевого интерфейса.

Информация о группе

Таблица 6 — Параметры группы

Параметр

Описание

hostname

Доменное имя первого сетевого интерфейса ВМ (см. раздел CMDB)

operating_system

Операционная система. Рассчитывается маппингом по настроечной таблице исходя из метаданных os_type корневого диска

members

Список, единственный элемент которого — имя пользователя (из Keystone), создавшего ВМ, с заданным в настройках суффиксом

Информация о сервере

Таблица 7 — Параметры сервера

Параметр

Описание

hostname

Доменное имя (FQDN) первого сетевого интерфейса ВМ (см. раздел CMDB)

operating_system

Операционная система. Рассчитывается маппингом по настроечной таблице исходя из метаданных os_type корневого диска

Описание методов API

Сервис предоставляет методы создания/удаления ВМ и групп AD:

  • Создание хоста включает в себя создание группы AD и создание ВМ, которая будет входить в эту группу.
  • Удаление хоста включает в себя удаление группы AD и удаление ВМ, которая входила в эту группу.

Все строки в телах запросов имеют формат Unicode.

Запросить bearer-токен

Тип запроса: POST, путь /login

Авторизация для получения Bearer-токена, который нужен для авторизации остальных запросов.

Пример тела запроса
{  "username": "login",  "password": "password"}

Описание параметров тела запроса приведено ниже в таблице 8.

Таблица 8 — Описание параметров тела запроса для метода /login

Поле

Тип

Обязательность

Описание

username

string

Да

Имя пользователя / логин

password

string

Да

Пароль пользователя

В ответе метода используются следующие HTTP-коды:

  • 200 — токен получен.
  • 400 — некорректный запрос.
  • 401 — отказано в доступе.
Пример ответа на запрос
{  "token": "1mx6L2L7AMdEsyKy5LW9s8gt6mBxdICwosVn5sjhbwykOoQJFUru6752dwsj2THN"}

Создать группу AD

Тип запроса: POST, путь /api/v1/groups

Создать группу AD для ВМ. Для каждой ВМ создается своя собственная группа.

Пример тела запроса
{  "hostname": "project-vm.example.",  "operating_system": "Linux",  "members": [    "member@example.ru"  ]}

Описание параметров тела запроса приведено ниже в таблице 9.

Таблица 9 — Описание параметров тела запроса для метода /api/v1/groups

Поле

Тип

Обязательность

Описание

hostname

string

Да

Доменное имя первого сетевого интерфейса ВМ вида <ЗАГОЛОВОК_ПРОЕКТА>-<DNS_ИМЯ_ИНТЕРФЕЙСА>.<DNS_ДОМЕН>.

operating_system

string

Да

Имя операционной системы, установленной на хосте. Может включать в себя любые символы

members

array[string]

Да

Список, единственный элемент которого — имя пользователя, создавшего ВМ. Может иметь формат email-адреса

В ответе метода используются следующие HTTP-коды:

  • 200 — группа создана.

Удалить группу AD

Тип запроса: DELETE, путь /api/v1/groups/{hostname}

Удаление группы AD, за которым последует удаление ВМ, которая входила в эту группу.

Пример запроса
curl -X DELETE "https://<hostname>/api/v1/groups/computer1" -H "accept: application/json"

В методе используются параметры, перечисленные ниже в таблице 10.

Таблица 10 — Описание параметров (path) для метода /api/v1/groups/{hostname}

Поле

Тип

Обязательность

Описание

hostname

string

Да

Доменное имя (FQDN) группы, которую нужно удалить. Имеет вид <ЗАГОЛОВОК_ПРОЕКТА>-<DNS_ИМЯ_ИНТЕРФЕЙСА>.<DNS_ДОМЕН>.

В ответе метода используются следующие HTTP-коды:

  • 200 — удаление группы выполнено.
  • 404 — указанной группы не существует.

Создать ВМ

Тип запроса: POST, путь /api/v1/computer

Создание ВМ, перед которым следовало создание группы AD для данной ВМ.

Пример тела запроса
{  "hostname": "project-vm.example.",  "operating_system": "Linux"}

Описание параметров тела запроса приведено ниже в таблице 11.

Таблица 11 — Описание параметров тела запроса для метода /api/v1/computer

Поле

Тип

Обязательность

Описание

hostname

string

Да

Доменное имя первого сетевого интерфейса ВМ вида <ЗАГОЛОВОК_ПРОЕКТА>-<DNS_ИМЯ_ИНТЕРФЕЙСА>.<DNS_ДОМЕН>.

operating_system

string

Да

Имя операционной системы, установленной на хосте. Может включать в себя любые символы

В ответе метода используются следующие HTTP-коды:

  • 200 — создание ВМ выполнено.

Удалить ВМ

Тип запроса: DELETE, путь /api/v1/computer/{hostname}

Пример запроса
curl -X DELETE "https://<hostname>/api/v1/computer/computer1" -H "accept: */*"

В методе используются параметры, перечисленные ниже в таблице 12.

Таблица 12 — Описание параметров (path) для метода /api/v1/computer/{hostname}

Поле

Тип

Обязательность

Описание

hostname

string

Да

Доменное имя ВМ, которую нужно удалить. Имеет вид <ЗАГОЛОВОК_ПРОЕКТА>-<DNS_ИМЯ_ИНТЕРФЕЙСА>.<DNS_ДОМЕН>.

В ответе метода используются следующие HTTP-коды:

  • 200 — удаление ВМ выполнено.
  • 404 — указанной ВМ не существует.

DNS

Синхронизирует информацию в целевом DNS о ВМ и балансировщиках нагрузки.

Структурно информация, передаваемая в целевые DNS, состоит из словаря (см. ниже таблицу 13). При создании объекта создается DNS-информация, при удалении — удаляется. При изменении — удаляется и создается новая.

Таблица 13 — Параметры DNS

Параметр

Описание

fqdn

Доменное имя (FQDN) первого сетевого интерфейса ВМ (см. раздел CMDB)

ip

IP-адрес первого IPv4 сетевого интерфейса

Информация DNS синхронизируется:

  • Для всех сетевых интерфейсов ВМ:

    • Не принадлежащих настраиваемому списку проектов.
  • Для балансировщиков нагрузки LBaaS и Octavia:

    • Созданных на frontend (с заданным пользователем DNS-именем, отличным от стандартного host-<IP>).
    • Балансировщики нагрузки DBaaS.
    • Балансировщики нагрузки k8s API KaaS.

На передаваемую в целевые DNS информацию оказывают влияние следующие действия пользователя:

  • Создание / удаление ВМ.
  • Подключение / отключение сетевых интерфейсов.
  • Изменение DNS-имени сетевых интерфейсов.
  • Создание / удаление балансировщика нагрузки.
  • Изменение DNS-имени VIP сетевого интерфейса балансировщика нагрузки.
  • Создание / масштабирование / удаление PaaS объектов (например, кластеров/инстансов DBaaS, кластеров KaaS).

Описание методов API

Запросить bearer-токен

Тип запроса: POST, путь /login

Авторизация для получения Bearer-токена, который нужен для авторизации остальных запросов.

Пример тела запроса
{  "username": "login",  "password": "password"}

Описание параметров тела запроса приведено ниже в таблице 14.

Таблица 14 — Описание параметров тела запроса для метода /login

Поле

Тип

Обязательность

Описание

username

string

Да

Имя пользователя / логин

password

string

Да

Пароль пользователя

В ответе метода используются следующие HTTP-коды:

  • 200 — токен получен.
  • 400 — некорректный запрос.
  • 401 — отказано в доступе.
Пример ответа на запрос (код 200)
{  "token": "1mx6L2L7AMdEsyKy5LW9s8gt6mBxdICwosVn5sjhbwykOoQJFUru6752dwsj2THN"}

Создать запись типа A

Тип запроса: POST, путь /api/v1/rr/A/

Запрос для создания записи типа A. Для ВМ используется первый адрес первого сетевого интерфейса, для балансировщика нагрузки — первый адрес VIP порта балансировщика.

Пример тела запроса
{  "name": "project-vm.example.",  "value": "192.168.193.7"}

Описание параметров тела запроса приведено ниже в таблице 15.

Таблица 15 — Описание параметров тела запроса для метода /api/v1/rr/A/

Поле

Тип

Обязательность

Описание

name

string

Да

Доменное имя сетевого интерфейса объекта вида <ЗАГОЛОВОК_ПРОЕКТА>-<DNS_ИМЯ_ИНТЕРФЕЙСА>.<DNS_ДОМЕН>.

value

string

Да

IPv4-адрес, который соответствует доменному имени из параметра name

В ответе метода используются следующие HTTP-коды:

  • 200 — запись типа A создана.
  • 400 — запись уже существует.

Удалить запись типа A

Тип запроса: 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]}.

Таблица 16 — Описание параметров (path) для метода /api/v1/rr/A/{fqdn}

Поле

Тип

Обязательность

Описание

fqdn

string

Да

Доменное имя, для которого нужно удалить соответствующую запись типа A

В ответе метода используются следующие HTTP-коды:

  • 200 — удаление записи типа A выполнено.
  • 404 — записи нет / уже удалена.