Задача

Один из важных плюсов облачных сервисов — возможность быстро поднять столько серверов, сколько нужно. Хочешь два — будет тебе два. Хочешь сто — два клика мышью и будет сто. Все зависит только от твоего кошелька, платформа же позволяет развернуть столько виртуальных серверов (с нужными ресурсами), сколько тебе нужно. С виртуальной машиной на домашнем компьютере такой фокус не проходит. Чтобы создать виртуалку, задать ей нужные настройки и, что муторнее всего, установить ОС, уходит уйма времени. В один момент мне стало интересно: а можно ли как-то автоматизировать процесс и разворачивать новые виртуальные машины по-настоящему быстро? Ну, то есть указать что-то вроде: "Хочу три виртуальные машины с такими-то настройками и установленную на них Ubuntu последней версии" — и получить эти три виртуальные машины без лишнего геморроя. В поисках подходящего решения я наткнулся на открытый проект Vagrant.

На сайте vagrantbox.es доступны образы разных ОС для быстрого развертывания
На сайте vagrantbox.es доступны образы разных ОС для
быстрого развертывания

Решение

Используя в качестве основы бесплатный и потому особенно любимый нами Oracle's VirtualBox (4.0.x или 4.1.x), Vagrant позволяет создавать и конфигурировать виртуальные машины динамически. Как это происходит, предлагаю рассмотреть прямо на примере. Загружаем с downloads.vagrantup.com нужную версию дистрибутива (есть версии для Windows, Linux, Mac OS X) и поднимаем наш первый инстанс (виртуальную машину):

$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box
$ vagrant init lucid32
$ vagrant up

Три команды — и новая виртуальная машина с установленной ОС запущена (если, конечно, ты не забыл предварительно установить VirtualBox)! Как несложно догадаться, команда "box add <имя виртуальной машины>" отвечает непосредственно за создание виртуальной машины.

Запуск виртуальной машины через Vagrant
Запуск виртуальной машины через Vagrant

В качестве параметра ей передается путь до специального box-файла — контейнера, позволяющего быстро развернуть на виртуальной машины нужную ОС. Мы указали не просто путь, а ссылку: в этом случае Vagrant сам выкачивает из сети образ.

Команда "init" инициализирует ОС, причем в качестве параметра необходимо указать тип системы: в нашем случае это 32-битная Ubuntu Lucid (10.04). После выполнения этих двух команд создается полностью работоспособная виртуальная машина с 512 Мб на борту. Последняя команда — "vagrant up" — лишь запускает ее в фоновом режиме.

Таким образом можно создавать и запустить нужное количество виртуалок. Управлять всем этим хозяйством можно опять же через консоль Vagrant. Работающую виртуальную машину можно оставить:

vagrant suspend 

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

vagrant status  

К любой из гостевых ОС можно подключиться по SSH, используя сам Valgrant:

vagrant ssh

Если запустить приложение без параметров, то оно выдаст список всех доступных команд.

Код проекта написан на Ruby
Код проекта написан на Ruby

Параметры гостевых ОС можно отконфигурировать (например, прописать статические IP), задав нужные настройки в специальном скрипте Vagrantfile, который пишется на Ruby. С его же помощью можно, к примеру, пробросить порты до нужной тебе виртуальной машины. И, конечно же, ты можешь создавать свои box-файлы, из которых далее быстро развертывать гостевые ОС.

 

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии