Предоставление облачных ресурсов на базе VMware с помощью BILLmanager. Или как появился новый личный кабинет CloudLITE

6ca289a607f3452aa1252e858df57c41.png

Эта история про то, как компания ISPsystem и ведущий российский поставщик облачных услуг DataLine нашли друг друга на конференции WHD.global в Германии и что из этого вышло. Мы рассказали про высокую адаптируемость BILLmanager, а коллегам из DataLine нужен был новый личный кабинет для их проекта CloudLITE. В результате через месяц DataLine попросил нас адаптировать BILLmanager для предоставления облачных ресурсов на базе VMware.

Мы с удовольствием взялись за работу и в первую очередь совместно с DataLine определили недостатки их прежней биллинговой платформы:

  • Невозможность самостоятельно сменить плательщика с физического лица на юридическое. Очень часто компании «примеряют» CloudLITE на свои задачи от лица «физика» с целью оптимизации расходов.
  • Отсутствие гибкости в тарификации услуг. Оплата происходила 1-го числа каждого месяца, и если на все 30/31 день денег на счёте не хватало, то предоставление услуг блокировалось. Посуточного списания средств не было.
  • Отсутствие механизма управления своими VDS напрямую из биллинга. Выполнить настройку можно было только через vCloud Director, а его интерфейс, в свою очередь, отпугивал пользователей своей сложностью: обилие кнопок и настроек сбивало с толку. Как выяснилось, большинству пользователей не нужно тонко конфигурировать свои виртуальные машины, достаточно типового шаблона.

DataLine очень подробно описали все эти моменты в статье про CloudLITE 2.0. Рекомендуем к прочтению.

После выявления минусов прежней платформы последовало тщательное изучение BILLmanager специалистами DataLine. Во время этой работы мы отвечали на возникающие вопросы и проводили вебинары для того, чтобы исследование нашей биллинговой платформы было максимально комфортным. В результате проведённых испытаний партнёром было составлено одно из лучших технических заданий в нашей практике. Затем ТЗ обсуждалось и корректировалось. Мы внимательно изучали документ, выявляли «тонкие моменты» и предлагали более эффективные методы их решения, опираясь на наш опыт работы.

После утверждения ТЗ стал понятен общий план работ:

  1. Переделать интерфейс BILLmanager в соответствии с корпоративным стилем компании и пожеланиями DataLine;
  2. Реализовать новый тип услуги, «Виртуальный дата-центр», и упрощённый механизм управления его виртуальными машинами;
  3. Написать обработчик для взаимодействия с API VMware vCloud.

Оставалось лишь установить сроки запуска Minimal Viable Product. Для этого обе стороны поставили под датами штампы-подписи, и работа закипела.

Процесс разработки


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

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

Первый ключевой пункт — создание виртуальной машины в ВДЦ из BILLmanager.

Алгоритм
Все действия производятся с правами администратора VDC.

1. На стороне биллинга инициируется создание ВМ
Необходимо заполнить следующие поля:
1.1. Шаблон vApp;
1.2. Сеть организации (если создана хотя бы одна сеть уровня организации в текущем VDC);
1.3. Имя vApp (если есть созданные vApp, то будет возможность указать уже существующий vApp);
1.4. Имя ВМ;
1.5. Пароль ВМ;
1.6. Параметры ВМ (HDD, CPU, MEM). Все параметры регламентированы значениями, указанными внутри шаблона vApp.

2. На стороне API VMware vCloud создаётся виртуальная машина
2.1. Создаём новый vApp;
2.1.1. Выполняем установку нового vApp;
2.1.2. При указании сети, к которой подключается vApp, создаём сеть уровня vApp;
2.1.3. Подключаем ВМ к сети уровня vApp;
2.1.4. Получаем список IP-адресов ВМ (внутренний/внешний);
2.1.5. Получаем имя ОС;
2.1.6. Применяем параметры ВМ (HDD, CPU, MEM);
2.1.7. Передаём BILLmanager 5 результат создания ВМ (успех/неудача).

2.2. Добавление ВМ в существующий vApp;
2.2.1. Производим рекомпозицию (Recompose) существующего vApp;
2.2.2. Применяем параметры ВМ (HDD, CPU, MEM);
2.2.3. Получаем имя ОС;
2.2.4. Проверяем, есть ли сеть vApp подключенная к необходимой нам сети организации (если указана в BILLmanager 5). Если сети нет, тогда создаём её.

Возвращаемся на уровень выше, продолжаем создание vApp
2.1.8. Подключаем ВМ к сети уровня vApp;
2.1.9. Получаем список IP-адресов ВМ (внутренний/внешний);
2.1.10. Передаём BILLmanager 5 результат создания ВМ (успех/неудача).


Второй — двунаправленная синхронизация состояний виртуальных машин между vCloud и биллинговой системой, как в автоматическом, так и в ручном режиме.
Подробности
  • Синхронизация всех виртуальных дата-центров происходит автоматически каждые 30 минут (есть задача в планировщике);
  • Синхронизация пользовательского ВДЦ может быть запущена вручную по нажатию кнопки «Обновить» в меню виртуальных машин в биллинговой платформе.

Во время синхронизации происходит сбор статистики с ВДЦ. Получаем такой вот «пакет»:

 
	4b9de9ad-a4d1-44e5-a846-0143c380e854
	
  		
    			
    			
    			
    			
    			
  		
	
  

Расшифруем, что есть что.

1. ...
1.1. id – ID услуги из BILLmanager;
1.2. status – включен ли VDC;
1.3. vdcid – UUID виртуального дата-центра.

2. 4b9de9ad-a4d1-44e5-a846-0143c380e854
2.1. name – имя сети организации;
2.2. значение узла – её UUID.

3. ...
3.1. id – UUID vApp;
3.2. name – имя vApp;
3.3. status – состояние vApp (6  - Process, 4 - Active, 3 - Suspended, 8 - Stopped).

4. ...
4.1. id – UUID ВМ;
4.2. name – имя ВМ;
4.3. status – см. выше;
4.4. ext_ip – внешний IP ВМ;
4.5. int_ip – внутренний IP ВМ;
4.6. vapp_template – vApp Template (шаблон контейнера), из которого была создана ВМ.

5. Параметры ВМ:
5.1.  – операционная система;
5.2.  – Пароль ВМ;
5.3.  – ID виртуального жёсткого диска и его размер в МБ;
5.4.  – количество CPU;
5.5.  – количество MEM в МБ.

Все эти значения агрегирует BILLmanager.

Третий — реализация доступа к только-только обновлённой компанией VMware веб-консоли виртуальной машины.
Почувствовали себя первопроходцами, поскольку на тот момент никто кроме нас подобную интеграцию ещё сделать не успел.
Исходный код


	
    		
    		vCloud WebConsole: __VMNAME__
    		
    		
    		
    		
	
	
    		

При отправке клиенту подменяем на этой форме следующие поля:
»__VMNAME__» — имя виртуальной машины;
»__VMX__» — ссылка на VMX файл виртуальной машины;
»__HOST__» — имя хоста (или прокси-сервера), через который выполняется соединение с консолью;
»__PORT__» — порт для подключения консоли;
»__TICKET__» — секретный ключ для проверки подлинности клиента.

Конечно же, не всё шло гладко: мы нередко натыкались на ошибки в облачной платформе, и реализация некоторых алгоритмов занимала больше времени, чем предполагалось. Были моменты, когда принять решение о том, что делать дальше, было очень сложно. Например, эпизод, когда при уже идущем бета-тестировании CloudLITE проявил себя баг vCloud Director. Поэтому создание новых виртуальных машин было невозможно.
Суть: если запросить через API список привязанных к виртуальному дата-центру IP-адресов, то вернётся максимум 128, даже если их больше. Подробное описание, если кому интересно, можно почитать здесь.
Было два варианта: искать обходные пути или обновлять Director. В первом случае решение было громоздким. Во втором случае существовал немалый риск возникновения сбоев серверов при накате апдейтов. К тому же мы интегрировали BILLmanager со старой версией; как всё будет работать с новой — неизвестно. Что делать?
В результате было принято решение обновить облачную платформу. К счастью, процесс прошёл без каких-либо происшествий, биллинговая платформа тоже заработала исправно.

Результаты


Благодаря профессионализму наших разработчиков и быстрой реакции DataLine на поступающие к ним запросы, задачу интеграции с vCloud мы решили без опозданий. Релиз Minimal Viable Product состоялся в изначально установленный срок. Кто первый угадает сколько строк кода при этом было написано — тому плюс в карму; засчитывается «попадание» в радиусе 100 строк. :-)

Что мы сделали:

  • Интуитивно понятный личный кабинет для клиентов, имеющий упрощённую панель управления виртуальными машинами. Стало возможным создать, запустить, остановить и удалить виртуальную машину; подключиться к ней через веб-консоль. Если нужно, то изменить количество ядер процессора, объём оперативной памяти, а также увеличить виртуальный жёсткий диск. Таким образом, в подавляющем большинстве случаев клиентам теперь не нужно обращаться к громоздкому интерфейсу vCloud Director.
  • Предоставление доступа к услугам пока есть средства для оплаты одного дня.
  • Возможность самостоятельной смены плательщика с физического лица на юридическое.

DataLine высоко оценил конечный результат.

Мы не остановились на достигнутом и выполнили стандартизацию взаимодействующего с vCloud обработчика. Теперь он доступен бесплатно в BILLmanager 5 Corporate для тех, кто планирует предоставлять облачные услуги на базе этого продукта от VMware. Чтобы задействовать данный обработчик, перейдите в меню «Интеграция» → «Обработчики услуг», создайте новый для нужного типа услуг, выбрав модуль обработки «VMware vCloud Director». Затем в списке тарифов выделите нужный, нажмите кнопку «Обработчики» и включите только что созданный. Всё, взаимодействие с облачной платформой теперь будет выполняться автоматически.
В дальнейших наших планах — разработка интеграции с другими облачными решениями. Следите за новостями!

P.S. Если вы хотите установить BILLmanager — инструкцию как это сделать можно найти здесь.

Комментарии (0)

© Habrahabr.ru