Введение в Vagrant
За последнее время обилие инструментов для разработчиков неуклонно растёт: 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 для Windows с официального сайта и установить.
- Скачать VirtualBox для Windows с официального сайта и установить.
При установке 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 путь до бинарников.
После успешного выполнения команды появится окно с шеллом:
Поздравляю! Первый этап выполнен. Для отключения виртуалки необходимо выполнить команду из хост-машины:
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 порту хост-машины.
Полезные ссылки:
- Vagrant boxes - список готовых образов виртуальных ОС
- Vagrant docs - официальная документация Vagrant
- 12 Factor app: Dev/prod parity - свод правил по разработке веб-приложений
- Используем KVM для создания виртуальных машин в Linux
- Обзор подсистемы Linux в Windows 10