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

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

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

Фотография автора

Автор: Антон Черноусов
Опубликовано: 2 недели, 1 день (последние правки: 0 минут назад) - 0 комментариев
Категории записи: KVM, Libvirt, Linux, Ubuntu, WEB, Виртуализация, Облака, Системное администрирование, Удаленное управление, Хостинг


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

Пожалуйста, оцените мою статью (всего оценок 1, средняя оценка 2.00):

Комментарии к статье:

Пока комментариев нет

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

обязательно

обязательно (не публикуется)

необязательно

обязательно

обязательно

Последние записи

Архив

2018

Категории

Ленты

RSS / Atom