Vagrant для разработки приложений



Как вы запускаете ваше web-приложение во время разработки? Кто-то пользуется локальной машиной с установленными nginx, apache, php-fpm. Кто-то использует еще более простые варианты типа встроенного WEB-сервера PHP. А кто-то грузит файлы на удаленный сервер. Все эти варианты имеют один недостаток, вам каждый раз приходится настраивать среду для запуска приложения. Вместо написания кода вы тратите время на рутинные операции. Чтобы избежать этого - используется Vagrant.

Vagrant - это удобная среда для управления системой виртуализации. Чаще системой виртуализации выступает VirtualBox, но может быть и Vmware. Вы настраиваете вашу конфигурацию виртуальной машины один раз, и все, ваши волосы становятся мягкими и шелковистыми.

О том как поставить Vagrant можно прочитать на официальном сайте.

Workflow Vagrant состоит из следующих пунктов:

  1. Скачать boxes, box - это базовая система (шаблон) вашей будущей виртуальной системы. Увидеть список возможных вариантов можно здесь.
  2. После выбора box нужно установить его командой: vagrant box add <название box>, box будет скачан в системную директорию vagrant и будет использоваться в для создания ваших виртуалок.
  3. Теперь можно перейти в корневой каталог вашего проекта, и выполнить команду vagrant init <название box>, в результате будет создан файл Vagrantfile с настройками виртуальной машины

Vagrantfile написан на языке Ruby.

Vagrant.configure("2") do |config| означает что будет использоваться 2 версия конфигурирования для настройки виртуальной машины.

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

config.vm.box - здесь должен быть описан box, о котором я говорил выше.

config.vm.network - настройка сети. Может быть 3 видов:

  1. "forwarded_port", guest: 80, host: 8080 - проброс порта, с 80 на виртуалке на 8080 на хосте, подробнее здесь
  2. "private_network", type: "dhcp" - частная сеть, подробнее здесь
  3. "public_network" - виртуальная машина будет запущена в вашей локальной сети. Подробнее здесь

Код описанный ниже позволяет запускать bash команды при запуске виртуалки.

Vagrant.configure("2") do |config|
  config.vm.provision "shell", inline: "echo hello"
end
provision также поддерживает ansible, chef, docker, puppet.

vagrant up - запустит вашу виртуальную машину

vagrant ssh - ssh доступ на машину.

vagrant reload - перезагрузка вашей машины.

config.vm.synced_folder "src/", "/srv/website" - позволяет использовать ваши файлы в src/ на ВМ в директории /srv/website


comments powered by Disqus