Автоматизируем виртуализацию на Linux. Установка и настройка Vagrant
На днях понадобилось развернуть виртуальную среду с большим количеством машин для тестирования. Как это организовать быстро, комфортно и с минимальным количеством затрат при дальнейшей работе? Выбор пал на Vagrant. Это своеобразная надстройка над виртуальными машинами со своей инфраструктурой и плюшками. Полностью настроенная, она позволяет за пару минут развернуть несколько виртуальных машин для тестирования — использую заранее созданные конфиги ( boxes ). Полностью же автоматизировать процесс создания, настройки и развертывания виртуалок можно решить с помощью связки Knife + Vagrant + Veewee + Packer.
Откровенно говоря, информации на русском языке в интернете по данной теме катастрофически мало. Вся она представлена буквально десятком приличных гайдов. Мне, к сожалению, так и не удалось нормально развернуть Vagrant не по одному из них — хотя тут можно списать часть неудач на не самый популярный выбор конфигурации и способа развертывания. Поэтому пришлось лопатить англоязычные источники — там информации оказалось ощутимо больше. В итоге многочасовых копаний и поисков, оказалось, что развернуть всю систему можно буквально за 10 минут — используя несколько команд. Эхх…знать бы сразу, что все так несложно Учитывая немалую проделанную работу, решил, что не стоит пропадать зря времени. В этой статье я опишу гайд по установке и настройке Vagrant, для памяти — чтобы в следующий раз при надобности, можно было шустро развернуть рабочую систему не перекапывая половину интернета! А следующий раз может представиться ой как не скоро…полностью настроенная система не нуждается в переустановке или доработке. Разве что, допишите какие-нибудь свои хитрые модификации, да новый бокс свой сделаете. Ну это уже не проблема.
Итак, сам Vagrant будем разворачивать на Ubuntu 15.04 «Vivid Vervet» Desktop 64-bit (amd64). Скачать ее можно прямо с официального сайта совершенно бесплатно.
Для начала очень желательно обновить всю систему.
apt-get update
apt-get upgrade
Итак, для начала скачиваем и устанавливаем сам Vagrant с официального сайта. Опять же, абсолютно бесплатно — что немаловажно для Русского человека Там же кстати, можно почитать полную инструкцию на английском языке по самой программе. Меня она правда не впечатлила — написано довольно скомкано и настроить по ней что-то очень непросто. Разве что посмотреть возможные варианты команд — благо, они подсвечены
Дальше мы должны скачать собственно бокс. Тут можно написать отдельно — Vagrant использует boxes — заранее созданные и сконфигурированные образы операционных систем, которые можно взять раскатать на свою виртуалку. Боксы можно скачать с официального сайта, но выбор там довольно жиденький. В интернете есть несколько неплохих источников с готовыми боксами. Мне приглянулся вот этот.
Скачиваем любой понравившийся бокс, я возьму для примера такой: Ubuntu lucid 32.
Дальше, создаем директорию для Vagrant. Я буду делать это в домашней директории:
cd --
mkdir ~/vagrant
копируем туда наш скачанный бокс
cp ~/Downloads/Ubuntu_lucid_32.box ~/vagrant
и переходим в эту директорию
cd ~/vagrant
далее добавляем бокс в конфиг
vagrant box add ubuntu_32 Ubuntu_lucid_32.box
синтаксис команды следующий: vagrant box add (название вашей новой виртуалки) (файл бокса с которого делаем виртуалку или путь до файла в формате http:// … .box или ftp:// … .box)
Тоесть бокс можно скачать и по сети во время конфигурации, но у меня на данном этапе возникли трудности, поэтому пришлось качать руками и подсовывать.
Далее мы создаем базовый файл конфигурации виртуальной машины — Vagrantfile. Делается это командой:
vagrant init (название вашей новой виртуалки)
в данном случае, название я уже задал раньше: ubuntu_32
Дальше мы можем зайти и поправить сам Vagrantfile перед первым запуском. Сейчас мы это рассматривать не будем. Сразу запускаем виртуальную машину:
vagrant up
и собственно, ради чего все и делалось — заходим в саму виртуалку
vagrant ssh
Первый запуск виртуальной среды может быть довольно долгим — около 1-2 минут, все последующие запуски будут уже секунд по 10-15.
По умолчанию выбирается система виртуализации VirtualBox. Меня она вполне устраивает, поэтому я все оставляю как есть. Если же надо поменять среду виртуализации, то это делается командой:
vagrant up --provider= ( среда виртуализации, например, vmware_fusion).
Все параметры виртуальной машины и всего окружения настраиваются через Vagrantfile.
Ниже приведен небольшой не полный пример того, что можно настроить
— название бокса на основе которого будет разворачиваться виртуалка( по умолчанию стоит значение base) config.vm.box = «ubuntu_32»
— проброс портов (8080 нашей машинки на 80 виртуальной) config.vm.network :forwarded_port, host: 8080, guest: 80
— расшариваем и синхронизируем папки виртуалки и нашей системы config.vm.synced_folder «/home/feanor184/www/vagrant/src», «/var/www»
На самом деле последняя настройка практически не нужна, т.к. по умолчанию домашний каталог виртуальной машины /vagrant синхронизируется с директорией в которой лежит проект. Очень удобно
Команды для управления Vagrant
vagrant ssh # подключиться по SSH под юзером vagrant
vagrant suspend # поставить на паузу
vagrant halt # выключить
vagrant reload # перезагрузить конфиг (без выполнения provision)
vagrant reload —provision
vagrant destroy # удалить виртуалку
vagrant box list # cписок доступных «боксов»
Огромное спасибо за описание Vagrant’а!
Как-нибудь обязательно попробую в действии. Тем более, что быстрое разворачивание виртуалок для создания тестового стенда для продуктов — это то, что надо.
Особенно радует, что вагрант кроссплатформенный.
Спасибо добрый админ, давно искал информацию по развертыванию виртуалок. особенно за Vagrant.
Ооооо! Привет Линуксоидам! Прикольный блог!
Спасибо) Линуксоидам всегда рады)) Я правда можно сказать, пока новичек на этом поприще))
c vagrant provision для virtualbox — я вообще конкретно подсел на эту тему =)) Можно творить немыслимые вещи)