Pull to refresh

Virt-manager как online-сервис

Reading time 3 min
Views 35K
Сложилось так что понадобился инструмент для управления своими виртуалками вне офиса и при этом не всегда под рукой была машина с ОС Linux. Раньше приходилось активно пользоваться Putty и консольной утилитой virsh, что очень напрягало даже не так управление виртуалками а как их создание. По началу писал bash скрипты для оптимизации своих действий, но не всегда это было удобно.

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

Проект


WebVirtMgr сервис централизованного управления виртуальными машинами. В качестве основных технологий используются: гипервизор KVM и библиотека управления виртуализацией libvirt. Создание, установка, резервное копирование, настройка и запуск виртуальных машин реализованы в виде простого для освоения web-интерфейса. Для организации проброса экрана виртуальных машин в окно браузера используется VNC-клиент через SSH-туннель.

Технологии


Вся логика написана на языке Python с использованием фремвойка Django. Для взаимодействия Python’a с гипервизором используется библиотека Libvirt. Гипервизор по умолчанию KVM.

Как это все настраивается


Для работы нам понадобится сервер с установленным любым дистрибутивом ОС Linux. Правда в Debian\Ubuntu не поддерживаются некоторые функции libvirt в отличии от дистрибутивов семейства RedHat, а именно работа с сетевыми интерфейсами. Хотя это не на что не влияет мост (br0) для поброса сетевых интерфейсов для виртуальных машин можно настроить и через консоль. Ниже описан пример настройки CentOS 6.2, а как настраивать Ubuntu можно найти по этой ссылке.

Все по порядку, устанавливаем пакеты KVM и libvirt:

# yum -y install kvm libvirt

расcкоментрируем строку в файле /etc/sysconfig/libvirtd следующую строку:

# Listen for TCP/IP connections
# NB. must setup TLS/SSL keys prior to using this
LIBVIRTD_ARGS="--listen"

в файле /etc/libvirt/libvirtd.conf раскоментрируем строки:

listen_tls = 0
listen_tcp = 1

запускаем демон libvirtd:

# service libvirtd start

создаем пользователя для управления вашими виртуалкаи, где fred имя пользователя:
# saslpasswd2 -a libvirt fred
Password: xxxxxx
Again (for verification): xxxxxx

Если вы хотите чтобы ваши виртуалки смотрели наружу, то инструкция по настройке bridge для ваших сетевых интерфейсов находится здесь.

Дальше заходим на сам сайт регистрируемся, подтверждаем регистрацию, авторизируемся.

Перед добавлением сервера виртуализации в сервис WebVirtMgr проверьте настройки iptables (Ubuntu — ufw) и сделайте тестовое подключения к вашему гипервизору из консоли:

# virsh -c qemu+tcp://IP_вашего_сервера/system nodeinfo
Please enter your authentication name: fred
Please enter your password: xxxxxx
CPU model:           x86_64
CPU(s):              2
CPU frequency:       2611 MHz
CPU socket(s):       1
Core(s) per socket:  2
Thread(s) per core:  1
NUMA cell(s):        1
Memory size:         2019260 kB

если вы не увидели ошибок, а увидели информацию о системе, то смело добавляйте свой сервер виртуализации в сервис и управляйте виртуальными машинами.

Заключение


При написании проекта я получил реальный опыт работы с Django и Python что мне очень понравилось. Надеюсь что то что получилось принесет пользу кому то еще кроме меня, мне будет очень приятно если это действительно так. Даже если ничего не понравилось значит есть над чем работать. Если есть пожелания или рекомендации, а может быть вопросы то милости просим.

P.S.: Panel WebVirtMgr для установки на свой сервер.
Tags:
Hubs:
+4
Comments 8
Comments Comments 8

Articles