DrupalCafe#9@Novosibirsk https://vk.com/drupalcafe9
Чтобы избежать больших затрат на развертывание сред разработки и тестирования, приближенных к среде эксплуатации (development stage vs production stage parity), всё большую популярность приобретает виртуализация сред.
Доклад о том, как создавать соответствующую репродуцируемую среду разработки с использованием Vagrant.
-----
Сайт сибирского сообщества друпаллеров ДрупалСиб drupalsib.ru
Группа сибирского сообщества друпаллеров Вконтакте vk.com/drupalsib
Партнер Группа компаний И20 i20.biz
5. Реальность
git clone https://github.com/project.git
cd project
‣ Настраиваем виртуальный хост
‣ Запрашиваем конфиги к базам данных
‣ Боримся с фаталами при подъеме
‣ Просим помощи коллег
7. Почему?
‣ создавать рабочие окружения тяжело
‣ нужно ставить разное ПО для разных проектов
‣ распространять еще сложнее
‣ никаких гарантий (“Но это работает на моей
машине”)
20. Базовый конфиг (Vagrantfile)
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu"
config.vm.box_url = "https://github.com/downloads/roderik/VagrantQuantal64Box/quantal64.box"
end
21. Синхронизация каталогов между гостевой и родной
ОС
Vagrant.configure("2") do |config|
...
config.vm.synced_folder "~/projects", "/projects"
end
22. Настройка сети
Vagrant.configure("2") do |config|
...
config.vm.network :private_network, ip: "10.11.12.13"
config.vm.network :forwarded_port, guest: 8080, host: 8080
end
23. Что получаем?
‣ легкость создания и настройки
‣ изоляция (на каждый проект свой бокс)
‣ отделение среды разработки от ОС
‣ совпадает с продакшеном (можно и нужно
использовать те же инструменты на
продакшене)
‣ переносимость
24. Способы распространения
‣ вы можете скопировать файлы (или лучше
разместить их в git репозитории)
‣ вы можете упаковать существующий бокс
$ vagrant package --output=/tmp/demo.box
28. Итог
+ единое окружение у всех разработчиков/
тестировщиков и в продакшене
★ окружение легко создать и настроить
★ окружение изолировано
★ окружение легко скопировать/перенести
+ меньше время входа нового человека в проект
+ быстрая адаптация к новым требованиям
+ новый опыт
29. Примеры боксов для разработки
‣ 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