31
Развертывание рабочей среды c Михайлов Андрей Drupal developer Компания i20

Андрей Михайлов. Vagrant. Быстрое развертывание среды

Embed Size (px)

DESCRIPTION

DrupalCafe#9@Novosibirsk https://vk.com/drupalcafe9 Чтобы избежать больших затрат на развертывание сред разработки и тестирования, приближенных к среде эксплуатации (development stage vs production stage parity), всё большую популярность приобретает виртуализация сред. Доклад о том, как создавать соответствующую репродуцируемую среду разработки с использованием Vagrant. ----- Сайт сибирского сообщества друпаллеров ДрупалСиб drupalsib.ru Группа сибирского сообщества друпаллеров Вконтакте vk.com/drupalsib Партнер Группа компаний И20 i20.biz

Citation preview

Page 1: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Развертывание рабочей среды c

Михайлов АндрейDrupal developerКомпания i20

Page 2: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Как мы жили без него?

Page 3: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Идеальный мир

git clone https://github.com/project.gitcd project

Page 4: Андрей Михайлов. Vagrant. Быстрое развертывание среды
Page 5: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Реальностьgit clone https://github.com/project.git

cd project

‣ Настраиваем виртуальный хост‣ Запрашиваем конфиги к базам данных‣ Боримся с фаталами при подъеме‣ Просим помощи коллег

Page 6: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Мы в ******

Page 7: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Почему?‣ создавать рабочие окружения тяжело‣ нужно ставить разное ПО для разных проектов‣ распространять еще сложнее ‣ никаких гарантий (“Но это работает на моеймашине”)

Page 8: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Идея

Виртуальная ОС

Page 9: Андрей Михайлов. Vagrant. Быстрое развертывание среды
Page 10: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Сколько времени надо на развертывание?

Page 11: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Можем ли мы экспериментировать?

Page 12: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Решение

+

Page 13: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Что такое Vagrant?

‣ инструмент для создания и распространениярабочих окружений на базе виртуальныхмашин (http://www.vagrantup.com/)

Page 14: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Управление из консоли

Page 15: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Устанавливаем Vagrant1. Устанавливаем VirtualBox (https://www.virtualbox.org/wiki/Downloads)

2. Устанавливаем Vagrant (http://downloads.vagrantup.com/)

3. Загружаем Vagrant бокс

Page 16: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Что такое Vagrant бокс?‣ заранее упакованные образы виртуальныхмашин‣ список http://www.vagrantbox.es/‣ вы можете создать бокс сами :)

Page 17: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Как загрузить Vagrant бокс?$ vagrant box add {title} {url}$ vagrant box remove {title}

$ vagrant box list

Page 18: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Запускаем бокс

$ vagrant init {title}$ vagrant up

Page 19: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Можем расслабиться и попить кофе

Page 20: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Базовый конфиг (Vagrantfile)

Vagrant.configure("2") do |config|

config.vm.box = "ubuntu"

config.vm.box_url = "https://github.com/downloads/roderik/VagrantQuantal64Box/quantal64.box"

end

Page 21: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Синхронизация каталогов между гостевой и родной ОС

Vagrant.configure("2") do |config| ... config.vm.synced_folder "~/projects", "/projects"end

Page 22: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Настройка сети

Vagrant.configure("2") do |config| ... config.vm.network :private_network, ip: "10.11.12.13" config.vm.network :forwarded_port, guest: 8080, host: 8080end

Page 23: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Что получаем?‣ легкость создания и настройки‣ изоляция (на каждый проект свой бокс)‣ отделение среды разработки от ОС‣ совпадает с продакшеном (можно и нужноиспользовать те же инструменты напродакшене)‣ переносимость

Page 24: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Способы распространения

‣ вы можете скопировать файлы (или лучшеразместить их в git репозитории)‣ вы можете упаковать существующий бокс

$ vagrant package --output=/tmp/demo.box

Page 25: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Схемы работы

Page 26: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Один ко многим

Page 27: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Один к одному

Page 28: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Итог+ единое окружение у всех разработчиков/тестировщиков и в продакшене ★ окружение легко создать и настроить ★ окружение изолировано ★ окружение легко скопировать/перенести+ меньше время входа нового человека в проект+ быстрая адаптация к новым требованиям+ новый опыт

Page 29: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Примеры боксов для разработки

‣ 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

Page 30: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Drupal Codesprint Kyiv 2014

https://github.com/podarok/csua_d8

https://github.com/podarok/csua

Page 31: Андрей Михайлов. Vagrant. Быстрое развертывание среды

Вопросы?

[email protected]://github.com/andrew-mikhailov

twitter.com/mikhailovcom