Что такое vagrant и зачем он нужен
Записки программиста
Начало работы с Vagrant и зачем он вообще нужен
В первом приближении Vagrant — это такой CLI для VirtualBox. То есть, утилита, которая говорит «создать виртуалку», «запустить виртуалку» и так далее. На самом деле, Vagrant представляет собой нечто куда большее. В частности, помимо VirtualBox есть немало других так называемых провайдеров — VMWare, Amazon EC2, LXC и libvirt.
Для каких задач может пригодиться Vagrant?
Как видите, штука полезная. Давайте же научимся ею пользоваться!
VirtualBox качаем отсюда, а Vagrant — отсюда. Устанавливаем:
Чтобы не возиться со всякими там ISO-образами в Vagrant есть такое понятие, как боксы. Бокс — это сохраненный образ системы. Чтобы создать новую виртуалку, вам нужен бокс. Когда вы архивируете состояние вашей ВМ, на выходе также получаете бокс. Скачаем бокс с Ubuntu 14.04:
Теперь создадим новую виртуалку:
/ vagrant / ubuntu-test
cd
/ vagrant / ubuntu-test
vagrant init ubuntu / trusty64
В каталоге появится файл с именем Vagrantfile. Здесь задаются параметры ВМ. Можно изменить ограничения по памяти и CPU, включить или отключить шаринг каталогов с хост-системой, поправить настройки сети, в том числе — настроить проброс портов из гостевой системы в хост-систему, и так далее. Кстати, по умолчанию все виртуалки находятся в одной виртуальной LAN и видят друг друга. Здесь и далее в качестве провайдера мы будем использовать VirtualBox. Он очень гибок в плане настроек. В частности, в Vagrantfile можно передать любые аргументы утилите VBoxMange, что не удивительно, так как под капотом всю виртуализацию Vagrant делает с ее помощью.
Запустим виртуалку и зайдем в нее по ssh:
/.ssh/config для входа в виртуалку:
# vagrant ssh-config
Тут следует отметить, что говоря vagrant up вы должны находится в одном каталоге с Vagrantfile. При этом после запуска ВМ вы сможете обращаться к ней по id уже из любого каталога. А физически все виртуалки лежат вовсе не рядом с Vagrantfile, а в каталоге
/VirtualBox VMs/. Есть подозрения, что интерфейс у Vagrant мог бы быть более однотипным, и от этого более простым и понятным, но уж как сделали.
Попав внутрь ВМ вы обнаружите, что работаете под пользователем vagrant, который может делать sudo без пароля. При этом есть возможность обмениваться файлами с хост-системой:
Файл hello появится в каталоге
/vagrant/ubuntu-test хост-системы. В гостевой системе доступ к каталогу /vagrant/ имеет только пользователь vagrant. Если вдруг такой способ взаимодействия с гостевой системой кажется вам неудобным, ничто не мешает завести обычного пользователя, сказать ssh-copy-id и обмениваться файлами с помощью scp.
Если в хост-системе сказать:
… то можно увидеть все ВМ и их состояние.
Если ВМ удалялась не через Vagrant, она может остаться в global-status. Лечится это так:
Виртуалки можно ставить на паузу:
Заметьте, что можно использовать не полный id вируталки (1f2a1a5), а только его начало (например, 1f). Кроме того, если вы присвоили ВМ имена, как было описано выше, то можно использовать их.
Полная останова и запуск:
Можно создать из виртуалки бокс, сказав в каталоге с Vagrantfile:
Появится файл package.box (у меня он получился около 350 Мб). Упаковывать его не нужно, это уже сжатый файл.
Часто требуется присвоить виртуалке фиксированный IP в LAN. Для этого находим в Vagrantfile строку, похожую на следующую, раскомментируем и правим:
В качестве примера альтернативного провайдера рассмотрим vagrant-lxc. Как вы догадались, он позволяет делать все, что было описано выше, используя LXC вместо VirtualBox. Если в двух словах:
Подробности можно найти на GitHub’е плагина.
Как видите, все довольно просто. Дополнительную информацию вы можете найти по следующим ссылкам:
А пользуетесь ли вы Vagrant и если да, то для каких задач?
Vagrant для малышей, или как на Windows легко получить настроенный сервер для разработки веб-приложений
Здравствуй, мой дорогой любитель поработать с Composer’ом, создавая свой очередной крутой проект на одном из модных фреймворков. Или, быть может, ты — фронтэнд-мастер, пишущий сложные штуки на JS и CSS, компилируя их из jsx- и less-файлов, устанавливая библиотеки через Bower, а проект собирая в каком-нибудь Grunt, попутно прогоняя код юнит-тестами и, конечно же, заливая потом всё это на github… Если всё это — часть твоей повседневной жизни, то хвала Всевышнему, поздравляю: ты прошел все эти испытания и даже не сломал себе мозг. Отныне, ты — из числа тех счастливых, потративших не одну неделю, разбираясь в том, как корректно настроить всю эту кучу инструментов, а также, ты — один из тех, кто может доминировать, властвовать и унижать блистать своими знаниями в комментариях Хабра к статьям других, менее проворных и смышлёных коллег по цеху…
Но… быть может, ты — лишь один из тех, кто только мечтает о подобных извращениях манипуляциях мастеров разработки современных веб-приложений?) Тогда я спешу обрадовать тебя: я тут на днях узнал пару полезных вещей и понял, что это — настоящий подарок для начинающих разработчиков. И решил написать эту статью.
Уже несколько лет я слышу о Vagrant, да и ты, наверное, тоже краем уха слыхал об этом средстве для быстрого разворачивания настроенных виртуальных машин. Но, каждый раз, когда я читал очередную статью о Vagrant’е, меня отталкивала излишняя сложность инструкций к нему. Не люблю я забивать свою голову лишней информацией: как-то проще было всё это время ставить всё необходимое через «sudo apt-get install [program-name]» и вручную добавлять новые конфиги в nginx, беря за основу старые. Но, почитав на днях инструкцию в документации к Laravel, я понял, что всё не так уж и страшно, а желание обучить программированию своего знакомого стало последним фактором, из-за которого я всё-таки полез настраивать на своей машине Vagrant…
Разработчики Laravel создали свой образ виртуальной машины для Vagrant’а, который уже содержит в себе все средства и инструменты, необходимые тебе для счастливой разработки. В итоге, в совокупности с маленькой утилитой Homestead, также заботливо предоставляемой Laravel для работы с их образом, работать с ним реально проще простого. Список основных компонентов, установленных в их образе, можно посмотреть в документации. Среди прочих инструментов, не указанных в нём, числятся такие вещи, как, например, composer и git. В общем, там уже есть всё необходимое для тебя. Нам с тобой остаётся лишь немного разобраться в том, как работает Vagrant и Homestead и спокойно всё это дело использовать в своей повседневной работе.
И не обязательно использовать данный набор только для проектов, основанных на Laravel: скрипт Homestead предоставляет простые средства для ведения разработки сразу нескольких проектов, через простой файл конфигурации позволяя управлять базами данных и nginx-конфигурациями сервера. В итоге, мы получаем практически аналог Denwer’у, но при этом мы имеем дело с полноценным linux-сервером, которым, при необходимости, мы можем легко начать управлять вручную, и установить на него другие компоненты, и таким образом вырасти в более серьёзных и опытных разработчиков.
Предварительная настройка
По сути, всё, что надо сделать — это установить на свой компьютер VirtualBox и Vagrant и немного поковыряться с их настройкой. В статье я буду говорить только о Windows-пользователях, так как линуксоиды, я думаю, и сами всё смогут сделать по инструкциям в документациях. Конечно, всё не без проблем. Если ваше имя пользователя в системе Windows написано русскими буквами (как у меня), то приготовьтесь к ошибкам во время выполнения команд. В таком случае я рекомендую создать системную переменную среды VAGRANT_HOME с указанием папки без русских символов (не знаете, как это делается? почитайте об этом здесь, например), а также открыть настройки VirtualBox’а и указать папку хранения виртуальных машин, в которой тоже нет русских символов. Всё, теперь эти инструменты должны будут корректно работать и не выдавать ошибок.
Итак, основу мы для себя создали, пришло время написать немного команд 🙂 Жмём на клавиатуре клавиши Win+R, вбиваем в открывшееся окошко фразу «cmd», жмём Enter и попадаем в командную строку. Кстати, возможно, вам придётся перезагрузить машину после установки Vagrant, чтобы его команда стала доступна в консоли. Итак, для начала попробуем просто набрать слово «vagrant» в консоли и проверить, корректно ли установлен наш инструмент:
У меня всё нормально. Если возникли проблемы, то проверьте вашу переменную PATH, в ней должен быть путь к бинарнику Vagrant’а. И перезагрузите машину, если не сделали этого.
Дальше в официальной документации нам предлагают склонировать с помощью git или, что еще страшнее, установить через composer на свой компьютер библиотеку Homestead. У меня на винде нет ни git’а, ни, уж тем более, composer’а. И вообще: я эту виртуальную машину и собрался поставить себе как раз для того, чтобы избавить себя от ручной мороки с установкой всех этих инструментов… Поэтому, давай всё-таки не будем заниматься извращениями и просто, по старинке, скачаем zip-архив с github-страницы этой библиотеки на свой компьютер и распакуем его в какую-нибудь папочку 🙂
Распаковали? Теперь, чтобы установить библиотеку на компьютер, необходимо выполнить команду homestead init. Но вот снова беда: эта команда заработает у нас только тогда, когда на нашем компьютере будут установлены Composer и основные библиотеки Laravel. Другой вариант — это выполнить скрипт init.sh, лежащий тут же рядом, но для его выполнения нам всё равно нужен линуксовый интерпретатор. В общем, опять ставить кучу всякой всячины… Как видим, под виндой простого решения нет. Поэтому давай снова сделаем пару вещей вручную: откроем-ка содержимое файла init.sh и изучим его. Там всего 11 строк кода. Как видим, чтобы «установить» библиотеку, нам просто надо скопировать в папку
/.homestead несколько файлов (знак
обозначает домашнюю директорию текущего пользователя, у меня это «C:\Users\Ахмадуллин\»). Если проанализировать то, как работают их скрипты, то мы придём к выводу, что нам оттуда нужны следующие файлы:
Воот… Совсем другое дело. Мы уже почти готовы к полноценной работе с нашей виртуальной машиной. Для доступа к нашей машине нам также нужно создать себе SSH-ключи. Тут нам поможет набор инструментов программы Putty, которую мы также впоследствии будем использовать для управления своим сервером. Скачаем программу PuttyGen и сгенерируем с помощью неё свои приватный и публичный ключи, и сохраним их в папку
Публичный ключ сохрани под следующим именем: «
/.ssh/id_rsa.pub». При этом, приватный ключ нам необходимо сохранить в двух форматах: стандартном для Putty (кнопка Save private key, название файла —
/.ssh/putty_private.ppk, например), и в формате OpenSSH (пункт «Export OpenSSH key» в меню Conversions, название файла должно быть «
/.ssh/id_rsa»). Первый приватный ключ нам нужен для того, чтобы потом подключаться к серверу через программу Putty, а второй — для настройки и инициализации сервера через скрипты Homestead. В итоге, у нас должна получиться примерно такая картина с файлами ключей:
Теперь лишь осталось указать некоторые настройки нашему серверу перед запуском, если в этом есть необходимость. Открой в любом редакторе файл Homestead.yaml. Это единственный файл настроек, через который мы можем указывать все основные параметры нашей виртуальной машины. Стандартные настройки уже неплохо написаны, и для начала нам тут и менять ничего не придётся, я лишь кратко объясню его содержимое: раздел «folders» указывает связь каталогов виртуальной машины и вашей реальной системы, чтобы ты мог легко редактировать файлы в виртуальной машине через свой любимый редактор в главной системе. Раздел «sites» — это настройки nginx, и опять же, всё очень просто: мы просто задаём связь домена и каталога на сервере. Раздел «databases» перечисляет названия баз данных, которые будут созданы при инициализации виртуальной машины. Вот, собственно, и всё, что вам надо знать о конфигурировании нашей системы.
P.S. Да, и так как в разделе «folders» по умолчанию указана связь папки
/Code с аналогичной папкой в виртуальной машине, то не забудь создать данную директорию в папке своего пользователя. Впоследствии, через неё мы сможем работать с файлами твоего сервера.
P.P.S. И еще, имей ввиду, что формат yaml немного отличается своим подходом к хранению данных. Поэтому, если будешь добавлять туда свои параметры, учти, что количество пробелов здесь имеет значение, так как через них задаётся иерархия данных. Поэтому, устанавливай именно такие отступы к новым объектам, какие уже есть в файле. Более подробно можешь почитать о данном формате, например, в Википедии.
Ну и, наконец, мы подошли к самому интересному…
Запуск виртуального сервера
/.homestead и выполни в ней магическую команду:
Если ты всё сделал правильно, то у тебя начнётся загрузка VirtualBox-образа от разработчиков Laravel, и картина будет примерно такая:
Если Vagant сообщил тебе о какой-либо проблеме, не отчаивайся: внимательно изучи текст ошибки и попробуй вбить её текст в Google. Скорее всего, есть уже множество людей, которые столкнулись с подобной проблемой и каким-либо образом решили её. Если образ успешно скачался на твой компьютер, и ошибка возникла во время загрузки машины, то попробуй открыть VirtualBox и запустить её вручную, без Vagrant’а, и посмотреть, что из этого выйдет. Vagrant — это, по сути, просто надстройка над VirtualBox, и ты можешь легко запустить собранную им виртуальную машину самостоятельно, если это будет надо.
Если же всё пошло нормально… То, через несколько минут работы Vagrant’а твоя виртуальная машина полностью настроится и установит все необходимые компоненты и параметры. И ты уже сможешь спокойно подключиться к своему полноценному серверу. Для этого можно использовать, например, Putty.
Подключение к серверу
P.S. на некоторых машинах была выявлена следующая проблема: Vagrant по какой-то причине не принимает созданный в Putty файл ключа и генерирует свой собственный, по его мнению, более безопасный. Ключ этот сохраняется по адресу «
Молодец, боец! Первый рубеж на пути покорения мира профессиональной разработки веб-приложений пройден. Теперь, давай напишем еще парочку команд и установим Laravel, просто для того, чтобы убедиться в том, что у нас на сервере всё корректно работает. Введи по очереди две следующие команды на своём сервере:
И сходи попей чайку. Когда вернёшься, открой ту самую папку
/Code, которую ты создавал в своей домашней директории, и если всё прошло нормально, то тебя там должен ожидать сюрприз 🙂
Так-то: сервер пофурычил что-то у себя, и на выходе мы получили на своём настоящем компьютере папку Laravel со всеми необходимыми файлами фреймворка. Осталось сделать самую малость для того, чтобы увидеть наше приложение в браузере: открой файл hosts в режиме администратора, чтобы иметь возможность редактировать его, и добавь туда следующую строчку:
А теперь открывай в браузере адрес homestead.app. Ну как, что видно? У меня вот такая картина:
Если достаточно прищуриться, то можно разглядеть логотип Laravel 🙂 Ну, можно еще мышкой выделить буквы, так виднее будет. В качестве упражнения, давай немного исправим это. Ты можешь открыть файл «
\Code\Laravel\resources\views\welcome.blade.php» и удалить оттуда строчки «color: #B0BEC5;» и «font-family: ‘Lato’;» в первых двадцати строках исходного кода. А потом сохранить этот файл и обновить свою страницу. Кажется, так стало лучше?)
В общем-то, это практически всё. Если ты дошёл до данной части статьи, и у тебя всё получилось, это означает, что ты большой молодец, и у тебя теперь есть полноценный собственный веб-сервер, в котором для тебя уже собраны все необходимые для работы технологии. Осталось только немного рассказать о том, как его останавливать, обновлять его конфигурацию и полностью удалить из системы. Для этого используй следующие команды Vagrant’а, и не забудь, что при этом ты должен находиться в директории
Всё написанное в данной статье — это очень краткое описание всех возможностей Vagrant’а, изучай официальную документацию и другие статьи по данному инструменту, если у тебя возникло желание разобраться в нём более глубоко. И советую также почитать комментарии к данной статье, там тоже иногда разные умные люди пишут полезные вещи. Ну и вот и всё. Кажется, статья закончена. Надеюсь, она принесёт пользу людям. И всего хорошего вам, дорогие разработчики 🙂
Что такое Vagrant: установка, запуск, использование
Vagrant — продукт компании HashiCorp, специализирующейся на инструментах для автоматизации разработки и эксплуатации. Он позволяет создавать и конфигурировать легковесные, повторяемые и переносимые окружения для разработки.
Без автоматизации подобный процесс может занимать как часы, так и целые дни, в зависимости от сложности проекта. Причем, для каждого человека в команде. Для каждой смены рабочей машины или после переустановки системы. Проблема усугубляется тем, что чем больше разработчиков на проекте, тем более разнообразные машины они используют, включая разные операционные системы. В подобном случае процесс настройки гарантированно будет разным, что является еще одним источником проблем. Весь процесс настройки должен быть где-то описан, но, как правило, эти описания быстро устаревают и их мало кто хочет поддерживать, а любые попытки поддерживать актуальность в конце концов угасают.
После добавления пары таких проектов операционная система становится сильно захламленной. Даже если вы не работаете над проектом, после включения компьютера начнут стартовать сервисы, которые требуются только для разработки.
И последнее: нередко требуется возможность развернуть проект и для не программистов, например верстальщиков или тестировщиков. Наличие даже хорошо описанного процесса установки мало им поможет.
Теперь можно попробовать сформулировать требования к идеальному окружению:
Vagrant создан для решения именно этих задач. Во многом его работа опирается на виртуализацию, для которой, по умолчанию, используется продукт VirtualBox. Но в отличие от обычной работы с виртуальной машиной, когда внутри нее стоит система с графической оболочкой, Vagrant создает виртуальную машину доступную только в терминальном режиме (через командную строку), при этом сама разработка продолжается на хост-машине, а вот запуск кода на выполнение происходит внутри машины. Другими словами, редактор ставится на вашу основную систему и код лежит также в ней. Vagrant прозрачно прокидывает код внутрь машины и позволяет его запускать.
Подготовка к работе
Использование Vagrant подразумевает некоторую настройку операционной системы и наличие определенных знаний:
Как установить Vagrant
Первым делом необходимо поставить систему виртуализации, например VirtualBox. Скачать его под вашу операционную систему можно здесь.
Затем скачайте установщик Vagrant под вашу операционную систему на странице Download.
Откройте терминал и убедитесь что Vagrant работает:
Инициализация
Рабочий процесс
Запуск
В этот момент уже можно начинать работать с кодом, лежащим в той же папке, что и Vagrantfile. Все изменения автоматически оказываются внутри запущенной виртуальной машины.
Подключение
Дальше можно действовать по старинке. Поставить все необходимые пакеты и зависимости, а затем запустить проект. Если это веб-сайт, то он запустится на определенном порту. По умолчанию все, что стартует внутри виртуальной машины, доступно только внутри. Для возможности обращаться к сайту с хост машины (через ваш любимый браузер), необходимо прокинуть соответствующий порт наружу. Об этом достаточно подробно рассказано в документации. Предположим, что внутри Vagrant сайт стартует на порту 8080, и вы хотите обращаться к нему снаружи. Для этого достаточно добавить в конфигурацию:
Остановка
Конфигурация системы
Установка необходимых программ внутрь Vagrant традиционным способом — не самый лучший способ добиться повторяемости. По сути такой подход ничем не отличается от настройки проекта на основной системе. Для решения задачи настройки используются средства configuration management, подобные Ansible. Vagrant хорошо интегрируется с ними. Подробнее об этом можно прочитать в официальной документации, а в одном из репозиториев хекслета есть пример такой интеграции.
Плагины
Vagrant может расширяться плагинами. Полный список можно найти на wiki.
Не вдаваясь в подробности, он делает так, что ваша система всегда остается рабочей при обновлении виртуальной машины. Без него возможна ситуация, когда обновив виртуальную машину вы увидите, что папка с кодом перестала синхронизироваться, и внутри Vagrant её нет.
Vagrant — виртуализация рабочего окружения
Как и всем дотнетчикам, мне приходилось работать со стеком технологий, основанных на Windows. Но иногда я озирался вокруг и изучал то, что мне казалось интересным, пока не наткнулся я на Ruby On Rails. Все было отлично, вот только инструментарий на Windows оставлял желать лучшего.
Как вы, должно быть, знаете, Ruby On Rails предоставляет великолепные инструменты командной строки, облегчающий работу с фреймворком. Так повелось, что для Windows консоль никогда не была сильной стороной. К тому же все эти инструменты, портированные на Windows, были крайне задумчивыми. По ощущениям, на одной и той же машине, команды rails, выполненные в Windows и выполненные в Linux, но запущенной в виртуальной машине, различались в отклике в несколько раз, а порой и на порядок. А ведь при изучении, важна каждая секунда. Нужно и в rails console поиграться с написанным, и сервер запустить, увидеть свой результат, и миграцию провести, а ждать при этом не хочется.
Когда я только приступал к изучению, слышал множество мнений, что Windows плох для rails-разработчика. В основном это касалось проблем кодировок и прочей несовместимости. Все советовали либо Linux, либо Mac. Но так просто соскочить с Windows я не мог. Слишком много тут оставалось, чего не было там, поэтому решено было разобраться с виртуализацией.
Первым делом, конечно же, на ум пришло просто установить десктопную версию Linux (в качестве подопытной была выбрана… ubuntu) и работать с ней. Развернутая на весь экран гостевая ОС позволяла работать как с нативной. Но при этом терялась связь с Windows, не было никакой интеграции. Обмен файлами, что бы не заморачиваться с самбой или shared-folder в VirtualBox, был осуществлен через dropbox (спасибо вовремя подоспевшей версии 1.1 с selective sync). В общем, костыль на костыле.
Вторым этапом эволюции этого подхода было избавление от интерфейса и работа с Linux только через командную строку, а все редактирование кода перенести в Windows. В качестве подопытной был выбран серверный вариант той же убунты. Благо в таком варианте виртуальная машина в спокойном режиме потребляла от 45 мб памяти. На машине было настроено все rails-окружение. Поднят SSH сервер для доступа к командной строке. Сеть была настроена через bridged-adapter, благодаря чему я мог обращаться к ней по отдельному ip адресу, не заморачиваясь с port-forwarding. Для обмена файлами был выбран samba сервер, тогда я еще не задумывался, что VirtualBox может сама шарить папки между гостьей и хостом. Полное непонимание того, как устроена самба, омрачило все мое дальнейшее существование, пока в русской Google Group по Rails мне не указали на уже готовый рецепт.
Имя ему — Vagrant. Для самых нетерпеливых — вот минимум того, что позволит вам начать работать:
Для всех остальных чуть подробнее.
Vagrant
Vagrant позиционирует себя инструментом для виртуализации рабочего окружения. Все, что я написал выше в статье, он сделает за вас сам. Все, что вам нужно для его использования — это Ruby, Gems и VirtualBox (четвертой версии, если вы используете последнюю версию Vagrant).
Принцип его работы таков — вы инициализируете его в какой-либо папке (в дальнейшем я не буду различать папки и директории, так как Vagrant работает в разных ОС), после этого устанавливаете предустановленную версию рабочего окружения. Vagrant устанавливает ее как гостевую ОС в VirtualBox и монтирует в нее текущую папку. Далее подключаетесь к гостевой ОС через SSH клиент и работаете. Для того, что бы перенести свое окружение в другую папку, все, что вам нужно сделать — это скопировать конфигурационные файлы (Vagrantfile и другие файлы, которые вы создаете в процессе настройки)
Первым делом устанавливаете сам Vagrant. Он является простым gem-ом:
Gems тянет так же несколько зависимых джемов, для работы с виртуальной машиной, системами управления установкой ПО и некоторыми другими.
Предустановленные ОС распространяются в так называемых боксах (box). В нашем случае это будет Ubuntu Lucid (10.04) 32-bit, которую автор проекта заботливо настроил и упаковал:
Поддерживается как http протокол, так и напрямую с файловой системы. Данный урл у меня выкачивался с очень медленной скоростью, поэтому я решил его скачать burnbit торентом: burnbit.com/torrent/162482/lucid32_box
Следующим шагом будет инициализация выбранной директории (именно с этой директорией и пойдет вся дальнейшая работа). Для этого создайте директорию, которая впоследствии будет смонтирована и выполните
Эта команда создаст файл Vagrantfile, в котором будут основные настройки вашего окружения. Последний параметр автоматически добавит в этот файл опцию использования уже добавленного выше бокса.
В принципе система уже готова. Запустить ее можно используя
Выбранная директория будет монтирована как «/vagrant». Все изменения будут автоматически синхронизированы. Подключиться к системе можно через SSH через vagrant@localhost и порт 2222. Логин и пароль на вход в систему — «vagrant: vagrant». Так же vagrant автоматически может создать вам файл настроек для Putty, если вы работаете из Windows:
Port forwarding
Все хорошо, но только система открыта для внешнего мира одним SSH портом.
С помощью настроек vagrant можно заставить VirtualBox перенаправлять порты. Делается это через Vagrantfile. Для этого достаточно раскомментировать соответствующую строку:
Что позволит общаться с 80 портом через 8080. Имя должно быть уникально, но особой роли для нас не играет. Таким образом, можно перенаправить любые порты. В случае rails вам, скорее всего, понадобится порт 3000:
В принципе все готово. Хотя отдельного упоминания стоит интегрированная система provisioning.
Provisioning
Данная система позволяет декларативным способом устанавливать ПО в систему. Есть интеграция с Chef и Puppet.
Расскажу на примере Puppet и как установить с его помощью Apache.
В Puppet ПО ставится с помощью, так называемых модулей. Уже готовые модули можно взять на сайте puppetslab.com. Для начала нужно создать в нашей директории папку с модулями, обзовем ее, скажем, modules. Скачиваем модуль с апачем (http://forge.puppetlabs.com/puppetlabs/apache) распаковываем и содержимое кидаем в подпапку apache (важно, что бы внутри этой папки уже находилось содержимое модуля).
Теперь нужно указать самому Vagrant, что бы он использовал Puppet и сконфигурировал его должным образом. Для этого в файле Vagrantfile нужно указать следующее:
где «modules» — это папка, с вашими модулями.
Теперь при следующем vagrant up система сконфигурирует Puppet и он установит apache. После полной загрузки системы, если вы установили перенаправление портов, можете увидеть ответ в браузере.
Заключение
Пусть вас не пугает то, что он использует Ruby, а сам, по сути, является джемом (gem). Он может стать удобным инструментом для любых разработчиков, кому нужно виртуализированное рабочее окружение. Он работает под разными платформами и может использовать разные гостевые ОС, все только в ваших руках.
Более подробную документацию можно найти на сайте vagrantup.com. Так же советую посмотреть скринкаст, показывающий настройку рабочего LAMP окружения.
Пример использования показывает только один сценарий использования. Он лишь решает мою проблему. Удобен он будет так же и командам разработчиков, позволяя стандартизировать рабочую среду, в которую входят библиотеки, сервера, БД и т.д. Группы разработчиков на разных платформах, единожды настроив, могут работать с одним окружением.