Андрей Михайлов. vagrant. Быстрое развертывание среды
DESCRIPTION
DrupalCafe#9@Novosibirsk https://vk.com/drupalcafe9 Чтобы избежать больших затрат на развертывание сред разработки и тестирования, приближенных к среде эксплуатации (development stage vs production stage parity), всё большую популярность приобретает виртуализация сред. Доклад о том, как создавать соответствующую репродуцируемую среду разработки с использованием Vagrant. ----- Сайт сибирского сообщества друпаллеров ДрупалСиб drupalsib.ru Группа сибирского сообщества друпаллеров Вконтакте vk.com/drupalsib Партнер Группа компаний И20 i20.bizTRANSCRIPT
Развертывание рабочей среды c
Михайлов АндрейDrupal developerКомпания i20
Как мы жили без него?
Реальностьgit clone https://github.com/project.git
cd project
‣ Настраиваем виртуальный хост‣ Запрашиваем конфиги к базам данных‣ Боримся с фаталами при подъеме‣ Просим помощи коллег
Мы в ******
Почему?‣ создавать рабочие окружения тяжело‣ нужно ставить разное ПО для разных проектов‣ распространять еще сложнее ‣ никаких гарантий (“Но это работает на моеймашине”)
Идея
Виртуальная ОС
Сколько времени надо на развертывание?
Можем ли мы экспериментировать?
Решение
+
Что такое Vagrant?
‣ инструмент для создания и распространениярабочих окружений на базе виртуальныхмашин (http://www.vagrantup.com/)
Управление из консоли
Устанавливаем Vagrant1. Устанавливаем VirtualBox (https://www.virtualbox.org/wiki/Downloads)
2. Устанавливаем Vagrant (http://downloads.vagrantup.com/)
3. Загружаем Vagrant бокс
Что такое Vagrant бокс?‣ заранее упакованные образы виртуальныхмашин‣ список http://www.vagrantbox.es/‣ вы можете создать бокс сами :)
Как загрузить Vagrant бокс?$ vagrant box add {title} {url}$ vagrant box remove {title}
$ vagrant box list
Запускаем бокс
$ vagrant init {title}$ vagrant up
Можем расслабиться и попить кофе
Базовый конфиг (Vagrantfile)
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu"
config.vm.box_url = "https://github.com/downloads/roderik/VagrantQuantal64Box/quantal64.box"
end
Синхронизация каталогов между гостевой и родной ОС
Vagrant.configure("2") do |config| ... config.vm.synced_folder "~/projects", "/projects"end
Настройка сети
Vagrant.configure("2") do |config| ... config.vm.network :private_network, ip: "10.11.12.13" config.vm.network :forwarded_port, guest: 8080, host: 8080end
Что получаем?‣ легкость создания и настройки‣ изоляция (на каждый проект свой бокс)‣ отделение среды разработки от ОС‣ совпадает с продакшеном (можно и нужноиспользовать те же инструменты напродакшене)‣ переносимость
Способы распространения
‣ вы можете скопировать файлы (или лучшеразместить их в git репозитории)‣ вы можете упаковать существующий бокс
$ vagrant package --output=/tmp/demo.box
Схемы работы
Один ко многим
Один к одному
Итог+ единое окружение у всех разработчиков/тестировщиков и в продакшене ★ окружение легко создать и настроить ★ окружение изолировано ★ окружение легко скопировать/перенести+ меньше время входа нового человека в проект+ быстрая адаптация к новым требованиям+ новый опыт
Примеры боксов для разработки
‣ Gitlab https://github.com/gitlabhq/gitlab-vagrant-vm‣ Rails https://github.com/rails/rails-dev-box‣ PHP https://github.com/dirkaholic/vagrant-php-dev-box
Drupal Codesprint Kyiv 2014
https://github.com/podarok/csua_d8
https://github.com/podarok/csua