Благодаря новогодним каникулам появилась возможность рассказать о проекте OpenVZ Web Panel. Данный проект занял 3-е место в номинации «Индивидуальный проект» конкурса «Лучший свободный проект России — 2010», проводимый журналом «Linux Format» (пруф-линк). Звучит немного пафосно конечно, но, как говорится, слов не выкинешь.

Interface

О главном


OpenVZ Web Panel представляет собой инструмент для управления серверами OpenVZ через веб-интерфейс. Основные фичи представлены ниже:
  • интуитивно понятный интерфейс
  • автоинсталлятор панели
  • поддержка 10 языков интерфейса (в том числе русский и английский)
  • создание/удаление виртуальных серверов
  • настройка лимитов виртуальных серверов (размер диска, объем памяти, лимиты на CPU)
  • возможность подключения нескольких физических серверов
  • бэкап/восстановление виртуальных серверов
  • клонирование виртуальных серверов
  • быстрая переустановка виртуального сервера
  • графики использования диска, памяти и процессора
  • многопользовательская система с ролями
Проект располагается на хостинге кода от Google по адресу http://code.google.com/p/ovz-web-panel/

В качестве команды для быстрой установки предлагается использовать следующее:
wget -O - http://ovz-web-panel.googlecode.com/svn/installer/ai.sh | sh
А после установки панель будет доступна по адресу:
http://<your-host>:3000

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

Немного истории


По роду своей деятельности мне довольно часто приходится создавать и настраивать машины для разработки и тестирования. Приходится это делать как на работе, так и дома. Физических серверов на все нужды не напасешься, поэтому виртуализация была естественным выбором. На работе для этого я в основном использую Parallels Virtuozzo Containers. Контейнерная виртуализация была выбрана благодаря скорости создания и работы контейнеров, их большой плотности на один сервер и удобству управления. Дома же я решил отказываться от прочих платформ в пользу OpenVZ (которая бесплатна, в отличие от Parallels Virtuozzo Containers). Однако с самой OpenVZ никакой панели управления не поставляется, но в вики есть страничка, где перечислены панели управления, поддерживающие OpenVZ. Правда, ни одна из этих панелей меня не устраивала по той или иной причине.

Этапы создания


Довольно долго я управлял серверами OpenVZ с помощью утилиты vzctl через командную строку, но в определенный момент это сильно надоело. Хотелось, чтобы люди имели сами возможность выполнить элементарные операции над своим виртуальным сервером (root-доступ и управление из консоли выглядело не лучшим вариантом). Повторное проглядывание списка существующих бесплатных панелей для OpenVZ ни к чему не привело. Я так и не выбрал проект, который готов бы был допилить. К слову сказать, кандидаты-то были, но сильное влияние Power Panel из Parallels Virtuozzo Containers не позволило сделать выбор. Так была сделана первая попытка написат�� собственную панель используя ExtJS, PHP, MySQL и Zend Framework.

Панель писалась (и пишется до сих пор) в свободное от основной работы время. Имея приличный опыт использования PHP+MySQL (9 лет практики и дважды ZCE), я все равно никак не мог сосредоточиться именно на написании проекта, а не вспомогательного кода. Ввиду небольшого количества времени, которое уделялось проекту, этот факт оказался весьма критичным, так как фичи добавлялись с черепашьей скоростью. Подливало масла в огонь еще и то, что я к тому моменту почитал про Ruby и Ruby on Rails и уже немного попрактиковался в этом. В сентябре прошлого года я решил переписать все с использованием Rails, чему, надо сказать, до сих пор очень рад. Теперь в проекте используется ExtJS, Rails, SQLite. За год он весьма основательно оброс фичами, прошел стадию обкатки и используется уже относительно немалым числом людей.

Почему Open Source


Проект изначально планировался бесплатным и был выложен в публичный доступ. Нашлись люди, которым проект был интересен и которые, возможно, как и я, были недовольны другими бесплатными панелями. Эти люди предлагали идеи по тем или иным фичам, в целом помогая проекту развиваться. Основные мои нужды по работе с OpenVZ панель уже удовлетворила, однако это не повод останавливаться. В issue tracker множество интересных идей по развитию, и читая их, понимаешь, что хочешь сам пользоваться той или иной фичей. Все это было бы невозможно, если бы проект был закрытым.

Целевая аудитория


Проект создавался исходя из нужд обслуживан��я машин для целей разработки и тестирования. Я не занимаюсь продажей виртуальных серверов и поэтому изначально панель не была ориентирована на данный сегмент. Однако ничто не мешает использовать панель в этой сфере. Более того, я обратил внимание, что небольшие хостинг-компании уже довольно активно используют OpenVZ Web Panel и продают виртуальные машины своим клиентам вместе с панелью. Поэтому, несмотря на мои внутренние нужды, такие фичи как Remote API и интеграция с биллингом WHMCS, тоже уже запланированы на версию 2.0.

Что дальше


Если вы пользуетесь OpenVZ, то, возможно, проект OpenVZ Web Panel вам пригодится. В вики-разделе на сайте проекта есть статьи с инструкциями по установке, конфигурированию, решению проблем. Issue tracker открыт для баг-репортов и новых идей по улучшению. Любая ваша помощь в разработке и развитии проекта — только приветствуется. А в планах и разработке сейчас — версия 2.0.