vRO (VMware Aria Automation Orchestrator, ранее vRealize Orchestrator) – один из лучших инструментов автоматизации. Он позволяет связать любые информационные системы, построенные на разных технологиях и взаимодействующие по различным протоколам в единую систему. Для самых распространённых систем и протоколов уже имеются готовые плагины (подключаемые модули) и/или пакеты процессов, которые предоставляют vRO доступ к функциям этих ИТ-систем.
В стандартной поставке vRO есть интеграция с платформой виртуализации VMware vSphere. Наличие в vRO плагина для взаимодействия с vCenter очень сильно облегчает работу с данной платформой. oVirt – тоже платформа виртуализации, это свободный “аналог” VMware vSphere, но у vRO нет ни встроенной поддержки oVirt (и не будет), ни готовых плагинов от сторонних разработчиков. Реализовывать интеграцию с oVirt придётся самостоятельно, сделать это можно двумя способами:
- Разработать пакет процессов, взаимодействующих с oVirt по REST API. Для выполнения любого действия, будь то чтение информации или создание/обновление какого-нибудь объекта формируется и отправляется REST-запрос к серверу oVirt. После создания необходимого для Ваших задач минимума элементарных процессов из них можно будет разрабатывать более сложные процессы. Так интегрируется с vRO большинство внешних систем;
- Разработать плагин интеграции, предоставляющий vRO возможности, аналогичные возможностям стандартного плагина VC. Плагины являются специализированными приложениями на Java, они расширяют функционал vRO дополнительными классами объектов для разработки сценариев. Каждый плагин также может содержать набор рабочих процессов для решения некоторых стандартных задач.
Разработка плагина
Поскольку нам очень хотелось работать с разными платформами виртуализации в едином стиле, то, несмотря на то что разработка плагина гораздо сложнее, мы выбрали именно этот вариант реализации. Плагин разработан с использованием vRealize Orchestrator Plug-in SDK и oVirt Java SDK.
Плагин также поддерживает древовидное отображение объектов и их свойств в инвентори vRO и в инструменте выбора объектов. В oVirt пока нет распределения виртуальных машин по структуре каталогов, поэтому все они отображаются в одном месте. Это неудобно пользователям при ручном выборе ВМ, возможно в следующих версиях плагина будет реализовано распределение по папкам при помощи дополнительных тегов.
Разрабатывать плагин oVirt, классы которого бы полностью повторяли все методы и свойства объектов из плагина VC, не имело смысла. Эти две платформы виртуализации отличаются и по своей внутренней структуре, и по возможностям. Однако, для удобства, на верхнем уровне (на уровне плагина и sdk-соединения) методы сделаны подобными методам плагина VC.
Например, поиск виртуальных машин по маске имени и их перезагрузка:
// VCPlugin | // OVPlugin |
Код изменения количества vCPU для заданной VM, в данном случае код уже сильно отличается, из-за различий в структурах классов API:
|
|
Установка и обновление плагина
- Загрузите .vmoapp файл последней версии плагина;
- Войдите в vRO Control Center (https://<vro-server>/vco-controlcenter/) как root;
- Откройте страницу Manage Plug-ins;
- Нажмите «Browse» и выберите файл .vmoapp подключаемого модуля;
- Нажмите «Upload»;
- Ознакомьтесь с информацией о плагине, если всё устраивает, примите лицензионное соглашение и нажмите «Install»;
- Подключаемый модуль будет установлен или обновлён;
- Внимание! После установки/обновления плагинов служба сервера vRealize Orchestrator автоматически перезапускается (примерное время недоступности vRO 7 – 10 минут);
- Убедитесь, что на странице «Manage Plug-ins» указана правильная информация о плагине и его версии;
- Если Вы обновляли плагин, то изменения классов, атрибутов и методов будут доступны только после очистки кэша браузера и перезагрузки страницы vRO;
- Запустите процесс «Add a oVirt connection» для создания нового подключения:
- В поле oVirt API URL укажите полный адрес до API (например, https://<ovirtengine-server>/ovirt-engine/api);
- Имя пользователя нужно указать с доменом, для администратора это admin@internal.
Развитие проекта
Текущая версия плагина использует далеко не все возможности API oVirt, мы будем дорабатывать плагин и расширять его функционал. Обязательно пишите обо всех замеченных ошибках, недостающих или неработающих методах, а также любые другие Ваши пожелания в Issues на странице проекта github или в комментариях к статье.
Основной проблемой при разработке этого плагина стало отсутствие развернутой документации по работе с vRO plug-in SDK. Опубликованные в сети руководства и примеры предназначены только для первичного знакомства с SDK. Если у Вас или у Вашего технического партнёра есть доступ к полной документации, то пожалуйста поделитесь!