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

by Anton Chernousov aka GITA-DEV


Опубликовано: 02 Июн 2018 (последние правки 1 месяц, 3 недели)


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

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

Как я уже сказал во вступительном слове к статье, проект 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, или в противном случае у вас не будет работать виртуальная консоль к серверу. На этом пока все, я думаю попозже сделаю более подробный обзор самого сервиса и расскажу как с ним работать и что там появилось нового.


Обратите внимание на статьи:


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

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

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


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

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

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


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

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

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


Есть вопросы?
Спрашивайте и я обязательно вам отвечу!

* Поля обязательные для заполнения .

Блог это некоммерческий проект! Если вам понравился мой блог и то что я пишу помогло вам на практике, то можете сказать спасибо материально.