Vagrant: что за зверь и как с ним работать?

Vagrant logo

За последнее время обилие инструментов для разработчиков неуклонно растёт: Ansible, Otto, Vagrant, Nomad, Consul, Puppet, Chef… Что это всё? Дабы немного прояснить ситуацию, сегодня я бы хотел рассказать о таком замечательном инструменте как Vagrant, который сам использую практически каждый день.

Что такое Vagrant?

Vagrant это инструмент, позволяющий унифицировать среду разработки и среду в которой этот код будет разворачиваться, используя технологию виртуализации. Проще говоря, если вы как и я любитель делать проекты в среде Windows, но в будущем разворачивать их на *nix машинах, то Vagrant вам в помощь 🙂 Очень часто возникают проблемы на фоне того, что среда разработки значительно отличается от среды, где будет крутиться конечное приложение. Например, в Windows название папки с Заглавной буквы и со строчной это одно и то же, хотя в unix системах это две разные папки.

С высоты птичьего полёта, Vagrant ничто иное как CLI (интерфейс командной строки) для VirtualBox с блекджеком и Vagrantfile.

В качестве демонстрационного примера мы создадим изолированную операционную систему на базе Ubuntu 14.04.3 LTS с виртуальным окружением Python + работающим Django приложением внутри.

Терминология

  • Виртуальная ОС — изолированная операционная система, работающая внутри программы-эмулятора
  • Программа-эмулятор — программа, использующая аппаратные средства виртуализации компьютерного процессора (прим. VirtualBox, VMWare, Parallels Desktop и т.д.) для создания изолированных виртуальных операционных систем внутри 1 физической машины
  • Vagrant — программа-обёртка вокруг программы-эмулятора «с плюшками»
  • Vagrantfile — файл, описывающий характеристики и поведение будущей виртуальной операционной системы на языке программирования Ruby

Установка

Весь процесс установки и настройки будет происходить в Windows среде. Для того чтобы установить Vagrant, необходимо выполнить следующие шаги:

При установке Vagrant и VirtualBox не должно возникнуть никаких проблем, поэтому сразу можно переходить к следующему пункту — настройке.

Настройка

После установки Vagrant и VirtualBox желательно перезагрузить компьютер. Если всё прошло без косяков, то можно приступить к запуску первой виртуальной машины.

Для этого необходимо ввести следующие команды:

mkdir vagrant_demo && cd vagrant_demo
vagrant init ubuntu/trusty64

Тем самым мы создали Vagrantfile, в котором заданы настройки по-умолчанию, а именно:

  • В качестве дистрибутива используется Ubuntu 14.04
  • Порт 22 гостевой (виртуальной) машины пробрасывается на 2222 порт хост машины
  • Текущая директория ./vagrant_demo пробрасывается на директорию /vagrant виртуальной машины
  • Гостевой системе выделяется 512 МБ ОЗУ и 40 ГБ жесткого диска

Содержимое Vagrantfile ничто иное как код на языке Ruby, задающий определённые характеристики и поведение.

ubuntu/trusty64 — это кодовое название vagrant box, т.е. готового образа системы. Все образы так называемых vagrant boxes можно найти здесь.

Для того чтобы запустить виртуальную машину необходимо выполнить:

vagrant up

Ниже представлен скриншот процесса загрузки бокса и его последующей установки

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

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

vagrant ssh

Но, в стандартной Windows отсутствует утилита ssh, поэтому можно получить вот такое сообщение об ошибке:

`ssh` executable not found in any directories in the %PATH% variable. Is an
SSH client installed? Try installing Cygwin, MinGW or Git, all of which
contain an SSH client. Or use your favorite SSH client with the following
authentication information shown below:

Но не стоит расстраиваться, достаточно установить пакет утилит Cygwin и прописать в переменную PATH путь до бинарников.

Cygwin bin PATH

После успешного выполнения команды появится окно с шеллом:

2015-12-25 16-29-13 Скриншот экрана

Поздравляю! Первый этап выполнен. Для отключения виртуалки необходимо выполнить команду из хост-машины:

vagrant halt

Список основных команд:

  • vagrant halt — останавливает виртуальную машину
  • vagrant destroy — удаляет виртуальную машину
  • vagrant suspend — «замораживает» виртуальную машину
  • vagrant global-status — выводит список всех ранее созданных виртуальных машин в хост-системе
  • vagrant ssh — подключается к виртуальной машине по SSH

Демо пример с Vagrant, поднимающим отдельную виртуальную машину с виртуальным окружением Python на борту, а также Django приложением, можно найти на моём гитхаб репозитории. Достаточно склонировать реп, перейти в папку и вызвать команду vagrant up. Vagrant установит Ubuntu 14.04.3 LTS и все необходимые пакеты, по завершению установки достаточно будет зайти на виртуальную машину и вызвать runserver.

Django приложение можно увидеть на 18000 порту хост-машины.

2015-12-25 16-43-22 Скриншот экрана

Полезные ссылки: