Ваш собственный облачный центр виртуализации (WebVirtMgr умер! Да здравствует WebVirtCloud panel!)

Только я хотел рассказывать о одном довольно старом внедрении Web-сервиса управления парком виртуальных машин на базе полностью открытых решений, как оказалось что проект WebVirtMgr был закрыт и теперь существует в своей новой ипостаси уже с модной приставкой Cloud. Итак друзья мои, сегодня я буду устанавливать и настраивать WebVirtCloud panel.

 
 
Логотип GITA-DEV

Автор: Черноусов Антон aka Gita-Dev
Опубликовано: 02 Июн 2018 (последние правки 1 месяц)

apt-get cloud dev git install libvirt live nginx postgres ssl tar ubuntu webvirtcloud авторизация прокси

Как я уже сказал во вступительном слове к статье, проект WebVirtMgr больше не существует, о чем написано в его официальной репе на гитхаб https://github.com/retspen/webvirtmgr и последние каммиты от разработчика были два года назад.

New project like WebVirtMgr with User Management and Filesystem management - WebVirtCloud

Новый проект, который теперь называется WebVirtCloud panel вы можете найти по адресу https://github.com/retspen/webvirtcloud и как вы видите, проект относительно активно развивается, что не может не радовать.

Новый Webvirtmanager

Установка WebVirtCloud panel

Так как WebVirtCloud panel, это достаточно типовое Python web-приложение, то и установка его будет довольно типовой:

  • Ставим необходимые библиотеки и пакеты
  • Создаем каталог для хранения нашего web-приложения и загружаем исходные коды с github
  • Проводим тестовый запуск
  • Настраиваем окружение для запуска в production

Устанавливаем необходимые пакеты Ubuntu Linux:

# apt-get -y install git python-virtualenv python-dev libxml2-dev libvirt-dev \
  zlib1g-dev nginx supervisor libsasl2-modules gcc pkg-config

Загружаем web-приложение с GitHub:

# mkdir /srv/
# cd /srv/
# git clone https://github.com/retspen/webvirtcloud
# cd ./webvirtcloud/
# cp webvirtcloud/settings.py.template webvirtcloud/settings.py

Подготавливаем окружение для запуска Django-приложения:

# pip install -r ./conf/requirements.txt
# ./manage.py migrate

Вы конечно можете изменить шаблон конфигурации и настроить веб-приложение на использование сторонней базы данных, например Postgresql в том случае, когда у вас большая ферма виртуальных машин и хостов. И еще, я специально не использовал виртуальное окружение, так как мое web-приложение единственное на сервере, если вы хотите использовать виртуальное окружение для запуска web-приложение, то вы можете руководствоваться моей статьей "Создание и публикация Django-приложения (Часть первая, создание типового Django-приложения)".

В шаблоне конфигурации отсутствует параметр SECRET_KEY, для его генерации можно использовать следующий код:

import random, string 
haystack = string.ascii_letters + string.digits + string.punctuation 
print(''.join([random.SystemRandom().choice(haystack) for _ in range(50)]))

Тестовый запуск и перенос в Production-окружение

Для запуска Django-приложения в режиме тестирования просто выполните команду:

# python ./manage.py runserver 0.0.0.0:8000

Перейдите на сервис подключившись по адресу http://<адрес сервера>:8000

Авторизация на сервисе управления KVM

Вам будет предложено окно авторизации на сервисе, но вы еще не создали ни одного пользователя и для создания пользователя используйте команду:

# ./manage.py createsuperuser

Попробуйте авторизоваться с созданным аккаунтом и если авторизация прошла успешно, то можем переходить к запуску в production-режиме и для запуска в Prod-режиме автор рекомендует использовать Supervisord. Просто скопируйте предложенную конфигурацию и измените владельца файлов, так как работа сервиса будет осуществляться от имени штатного непривилегированного пользователя www-data:

# cp conf/supervisor/webvirtcloud.conf /etc/supervisor/conf.d
# chown -R www-data:www-data /srv/webvirtcloud/

Отредактируйте скопированный файл конфигурации supervisord приведя его к следующему виду:

[program:webvirtcloud] 
command=/usr/local/bin/gunicorn webvirtcloud.wsgi:application -c /srv/webvirtcloud/gunicorn.conf.py 
directory=/srv/webvirtcloud 
user=www-data 
autostart=true 
autorestart=true 
redirect_stderr=true 
 
[program:novncd] 
command=/usr/bin/python2 /srv/webvirtcloud/console/novncd 
directory=/srv/webvirtcloud 
user=www-data 
autostart=true 
autorestart=true 
redirect_stderr=true

Перезапустите Supervisord:

# /etc/init.d/supervisor restart

Теперь нам остается лишь настроить Nginx для доступа к нашему сервису из сети Internet.

Настройка Nginx для организации доступа к системе управления из сети Internet

Я немного доработал конфигурационный файл который шел в комплекте с WebVirtCloud для поддержки Let's encrypt:

server { 
    listen 80; 
    server_name virtmanager.gita-dev.ru; 
    return 301 https://virtmanager.gita-dev.ru$request_uri; 
 
} 
 
server { 
    listen 443 ssl; 
    ssl_certificate /etc/letsencrypt/live/virtmanager.gita-dev.ru/fullchain.pem; # managed by Certbot 
    ssl_certificate_key /etc/letsencrypt/live/virtmanager.gita-dev.ru/privkey.pem; # managed by Certbot 
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot 
 
    server_name virtmanager.gita-dev.ru; 
    access_log /var/log/nginx/webvirtcloud-access_log;  
 
    location /static/ { 
        root /srv/webvirtcloud/; 
        expires max; 
    } 
 
    location / { 
        proxy_pass http://127.0.0.1:8000; 
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for; 
        proxy_set_header Host $host:$server_port; 
        proxy_set_header X-Forwarded-Proto $remote_addr; 
        proxy_connect_timeout 600; 
        proxy_read_timeout 600; 
        proxy_send_timeout 600; 
        client_max_body_size 1024M; 
    } 
}

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

Похожие статьи

Создание сети типа мост для платформы виртуализации KVM при помощи Libvirt

Создание сети типа мост для платформы виртуализации KVM при помощи Libvirt

Если вы используете в своей работе менеджер виртуальных машин virt-manager, то вы наверное обращали внимание, что при создании сети вы не можете выбрать режим работы сети в виде добавления интерфейсов в существующий сетевой мост, но так как в основе этого менеджера лежит KVM и Libvirt, то мы всегда можем выполнить эту операцию в ручную из консоли.


Подготовка KVM-Libvirt инфраструктуры (удаленное подключение с поддержкой авторизации)

Подготовка KVM-Libvirt инфраструктуры (удаленное подключение с поддержкой авторизации)

Сегодня я расскажу и покажу как настроить удаленное управление гипервизором KVM/Qemu. Одним из ключевых моментов построения современных систем виртуализации ориентированных на продакшн-использование является централизованное управление и естественно, что централизация управления достигается использованием API. Одним из API для управления гипервизорами KVM/Qemu является Libvirt и стоит отметить, что эта библиотека, позволяет управлять не только KVM/Qemu, но и LXC.


Обзор open source платформы управления фермой виртуализации KVM (новое в WebVirtCloud)

Обзор open source платформы управления фермой виртуализации KVM (новое в WebVirtCloud)

Как верно подметили читатели моего блога, я конечно рассказал как установить WebVirtCloud, но не рассказал, чем же она так кардинально отличается от того же Proxmox например, да и немного скриншотов бы тоже не помешало. Я в свою очередь наверное даже пойду дальше и подготовлю небольшое видео, где продемонстрирую создание нескольких виртуальных машин и покажу некоторые новые фишки WebVirtCloud.


Создание фермы виртуализации на базе KVM/QEMU с WEB-интерфейсом управления WebVirtManager

Создание фермы виртуализации на базе KVM/QEMU с WEB-интерфейсом управления WebVirtManager

Так как мне надо подготовить для портфолио несколько описаний выполненных проектов, то пожалуй начну с построения фермы виртуализации на базе OpenSource решений без использования Proxmox и т.п. Стоит отметить, что мне удалось создать полноценную ферму виртуализации из исключительно Open Source компонентов и мигрировать на построенное решение около 100 виртуальных машин на которых производилась разработка и тестирование программного обеспечения.


Настройка OS Windows для работы в UTC time (проблема с локальным временем виртуальной машины в системе виртуализации KVM)

Настройка OS Windows для работы в UTC time (проблема с локальным временем виртуальной машины в системе виртуализации KVM)

Ничего против Windows не имею и считаю, что для каждой задачи требуется свой инструмент, но некоторые легаси-вещи там тянутся из из совсем уже глубины веков и я сейчас говорю не про поддержку кодировки UTF-8, сейчас с этим дела обстоят немного лучше, а про часы системы которые все еще не в UTC. И это кстати сказать порождает некоторые нетривиальные баги при виртуализации ОС Windows в KVM.


Запуск узла KVM-фермы WebVirtCloud (Ввод в эксплуатацию тестового сервера Metatron)

Запуск узла KVM-фермы WebVirtCloud (Ввод в эксплуатацию тестового сервера Metatron)

Как вы наверное знаете я активно использую в работе консоль управления гипервизорами KVM которая называется WebVirt Cloud. Она гарантированно OpenSource с исходными кодами которые я активно переделываю под себя и сегодня я хотел рассказать как в нее добавить одну ноду.


Использование QEMU/KVM для установки операционной системы на физический диск

Использование QEMU/KVM для установки операционной системы на физический диск

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


Отзывы и комментарии