OpenStackAgent, гостевой агент для OpenStack инсталляций на базе Xen.

Что такое OpenStackAgent?
Некоторое время назад компания Mirantis работала над разворачиванием коммерческого публичного облака на основе связки OpenStack и Xen. В ходе работ нам пришлось решить целый ряд проблем, одной из которых стала неработоспособность функционала для задания пароля администратора при первом запуске гостевых виртуальных машин с Windows Server 2008R2 внутри. Взаимодействие OpenStack с гостевой машиной в Xen окружении – это довольно сложный процесс, в который вовлечено несколько компонентов (см. иллюстрацию). Одним из ключевых участников данного процесса является т.н. “гостевой агент” – специальный сервис, запущенный внутри гостевой ОС и выполняющий команды, получаемые извне.

Изначально мы использовали гостевого агента, реализованного компанией Rackspace, исходный код которого можно найти на странице проекта в Launchpad. Судя по списку открытых багов, этот проект находится в достаточно стабильном состоянии, однако скомпилированный сервис в сочетании с Cactus-версией плагина для Xen оказался неспособен менять пароль Администратора внутри гостевой ОС. Как показало глубокое изучение лог-файлов, причина крылась в ошибке на этапе инициализации модуля шифрования. Стоит отметить, что операция смены пароля в описанном окружении сама по-себе нетривиальна, т.к. задействует криптографический алгоритм Диффи-Хеллмана для защиты пароля при передаче его через открытый канал, а это, в свою очередь, требует введения предварительного этапа обмена ключами.
Надвигался срок сдачи проекта, на отладку оставалось все меньше времени, а критичный для нас функционал, несмотря на все наши усилия, по-прежнему не работал. Тогда буквально “на коленке” мы написали свою собственную версию гостевого агента. По понятным причинам в качестве языка программирования был выбран Python с использованием библиотеки pywin32 (в оригинале сервис был написан на С#). Позднее, когда облако было уже успешно развернуто и сдано в тестовую эксплуатацию, сервис обзавелся дополнительным функционалом, в том числе полноценным инсталятором на базе MSI пакетов, и эволюционировал в самостоятельный проект, который мы назвали OpenStackAgent и теперь хотели бы предложить вниманию сообщества. Мы хотим надеяться, что он окажется полезным.

Возможности
Сейчас сервис умеет:

Довольно скромный список, не правда ли? На момент написания статьи проект имеет версию 0.0.5 и активно разрабатывается, так что заглядывайте почаще на домашнюю страницу проекта за обновлениями.

Дальнейшее развитие

Использование

Сборка
Для сборки бинарного дистрибутива необходим следующий набор ПО

Сборка дистрибутива осуществляется при помощи команды python guest_agent/setup.py py2exe2msi . По окончании сборки результирующий MSI-пакет будет скопирован в текущую рабочую директорию.

Установка
Для запуска сервиса в гостевой ОС должны быть предварительно установлены следующие компоненты

Достаточно установить собранный MSI-дистрибутив и сервис будет автоматически зарегистрирован и запущен в системе. Для удобства диагностики процесс пишет отладочные сообщения в лог-файл%WINDIR%\Logs\OpenStackAgent.log, а также в системный журнал в раздел “Приложения”.

Обновление
Обновление сервиса происходит посредством простой установки MSI-пакета новой версии. Удаление старой инсталляции и перезапуск процесса при этом происходят автоматически.

Как можно принять участие в проекте?
Исходный код сервиса можно найти в специально созданном репозитории на GitHub. Любой желающий может скачать исходный код сервиса и внести свои изменения. Важно помнить, что проект распространяется под лицензией Apache 2.0.

Подписка на RSS канал
« »

Комментарии

Оставить комментарий
или