Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
БЫСТРОЕРАЗВЕРТЫВАНИЕСРЕДЫРАЗРАБОТКИ С	Антон Каляев
”Vagrant will change how you work”    Vagrant изменит ваш подход к разработке
Как я раньше жил без него?
Идеальный мир$ git clone git://github.com/project.git$ run
Мы счастливы
Реальный мир$   git clone git://github.com/project.git$   читаем README$   wget -O SDL_image-1.2.11.tar.gz http://goo.gl/9...
Мы в ****
Почему?‣ создавать рабочие окружения тяжело‣ распространять еще сложнее (README неустановит требуемое ПО за нас)‣ никакой ...
Решение
Идея                 ОСВиртуальная ОС        Виртуальная ОС
Что такое Vagrant?‣ инструмент для создания и распространениярабочих окружений на базе виртуальныхмашин (http://www.vagran...
Vagrant      Управление VM из командной строки     остановка VM  vagrant halt  перезагрузка VM  vagrant reloadдоступ по ss...
Устанавливаем Vagrant1. Устанавливаем VirtualBox (https://www.virtualbox.org/wiki/Downloads)2. Устанавливаем Vagrant (http...
Что такое Vagrant бокс?‣ заранее упакованные образы виртуальныхмашин‣ список http://www.vagrantbox.es/‣ вы можете создать ...
Как загрузить Vagrant бокс?    $ vagrant box add {title} {url}
Запускаем бокс$ vagrant init {title}$ vagrant up
Vagrant               Базовый конфиг (Vagrantfile)Vagrant.configure("2") do |config|  config.vm.box = "ubuntu"  config.vm.b...
VagrantСинхронизация каталогов между гостевой и родной ОСVagrant.configure("2") do |config|  ...  config.vm.synced_folder ...
Vagrant                       Настройка сетиVagrant.configure("2") do |config|  ...                                       ...
Что получаем?‣ легкость создания и настройки‣ изоляция (на каждый проект свой бокс)‣ отделение среды разработки от ОС
или как управлять тысячей серверов‣ система менеджмента конфигурации (SCM)‣ воплощение принципа “Инфраструктура каккод”
Chef cookbook‣ набор действий по установке, настройке изапуску какого-то определенногопрограммного пакета‣ обычно кросспла...
Установка и настройка ПО      На примере Postgresql
Скачиваем кукбуки                       вручную$ mkdir cookbooks$ git clone https://github.com/opscode-cookbooks/openssl.g...
Настраиваем provision                VagrantfileVagrant.configure("2") do |config|  ...  config.vm.provision :chef_solo do ...
Запускаем бокс$ vagrant up
Что получаем?‣ совпадает с продакшеном (можно и нужноиспользовать те же инструменты напродакшене)‣ переносимость
Переносимость            Способы распространения‣ вы можете скопировать файлы (или лучшеразместить их в git репозитории)‣ ...
Установка и настройка ПО     Продвинутый уровень :)
Berkshelf‣ менеджер кукбуков (как Bundler для Rubygems) http://berkshelf.com/                                             ...
Устанавливаем Berkshelf             перед этим нужно установить ruby          (http://www.ruby-lang.org/en/downloads/)$ ge...
Добавляем кукбук postgresql             Berksfile       site :opscode       cookbook postgresql
Настраиваем provision                     VagrantfileVagrant.configure("2") do |config|  ...  кукбуки berkshelf автоматичес...
Запускаем бокс$ berks install$ vagrant provision
Что получаем?‣ никакого копирования‣ автоматическое подгрузка зависимостей‣ управление версиями
В итоге+ единое окружение у всех разработчиков/тестировщиков и в продакшене  ★ окружение легко создать и настроить  ★ окру...
Vagrant providers‣ VirtualBox‣ WMWare fusion‣ AWS (https://github.com/mitchellh/vagrant-aws)
Vagrant provisioners‣ Chef Solo‣ Chef Server‣ Puppet Standalone‣ Puppet Server‣ Shell
Полезные плагины‣ vagrant-vbguest (https://github.com/dotless-de/vagrant-vbguest) - следит за состоянием GuestAdditions‣ v...
Примеры боксов для            разработки‣ Gitlab https://github.com/gitlabhq/gitlab-vagrant-vm‣ Rails https://github.com/r...
Полезные настройки    Используем NFS для синхронизации каталоговVagrant.configure("2") do |config|  ...  config.vm.synced_...
Полезные настройки                 Форвардинг SSH ключейVagrant.configure("2") do |config|  ...  config.ssh.forward_agent ...
Полезные настройки         Увеличиваем объем оперативной памятиVagrant.configure("2") do |config|  ...  config.vm.provider...
Вопросы?     anton.kalyaev@gmail.com           github.com/akalyaev     twitter.com/AntonKalyaev
Антон Каляев — Быстрое развертывание среды с Vagrant
Upcoming SlideShare
Loading in …5
×

Антон Каляев — Быстрое развертывание среды с Vagrant

7,499 views

Published on

Антон Каляев — Быстрое развертывание среды с Vagrant

  1. 1. БЫСТРОЕРАЗВЕРТЫВАНИЕСРЕДЫРАЗРАБОТКИ С Антон Каляев
  2. 2. ”Vagrant will change how you work” Vagrant изменит ваш подход к разработке
  3. 3. Как я раньше жил без него?
  4. 4. Идеальный мир$ git clone git://github.com/project.git$ run
  5. 5. Мы счастливы
  6. 6. Реальный мир$ git clone git://github.com/project.git$ читаем README$ wget -O SDL_image-1.2.11.tar.gz http://goo.gl/98zi6$ ./configure && make$ sudo make install$ пытаемся запустить хотя бы один тест$ ищем помощи у коллег$ MAGIC_CONST=23 prepare-run --fix-missing$ run
  7. 7. Мы в ****
  8. 8. Почему?‣ создавать рабочие окружения тяжело‣ распространять еще сложнее (README неустановит требуемое ПО за нас)‣ никакой изоляции (конфликтующиебинарники)‣ никаких гарантий (“Но это работает на моеймашине”)
  9. 9. Решение
  10. 10. Идея ОСВиртуальная ОС Виртуальная ОС
  11. 11. Что такое Vagrant?‣ инструмент для создания и распространениярабочих окружений на базе виртуальныхмашин (http://www.vagrantup.com/)
  12. 12. Vagrant Управление VM из командной строки остановка VM vagrant halt перезагрузка VM vagrant reloadдоступ по ssh vagrant ssh старт VM vagrant up
  13. 13. Устанавливаем Vagrant1. Устанавливаем VirtualBox (https://www.virtualbox.org/wiki/Downloads)2. Устанавливаем Vagrant (http://downloads.vagrantup.com/)3. Загружаем Vagrant бокс
  14. 14. Что такое Vagrant бокс?‣ заранее упакованные образы виртуальныхмашин‣ список http://www.vagrantbox.es/‣ вы можете создать бокс сами :)
  15. 15. Как загрузить Vagrant бокс? $ vagrant box add {title} {url}
  16. 16. Запускаем бокс$ vagrant init {title}$ vagrant up
  17. 17. Vagrant Базовый конфиг (Vagrantfile)Vagrant.configure("2") do |config| config.vm.box = "ubuntu" config.vm.box_url = "https://github.com/downloads/roderik/VagrantQuantal64Box/quantal64.box"end
  18. 18. VagrantСинхронизация каталогов между гостевой и родной ОСVagrant.configure("2") do |config| ... config.vm.synced_folder "~/projects", "/projects"end
  19. 19. Vagrant Настройка сетиVagrant.configure("2") do |config| ... прокидываем порты статический ip config.vm.network :private_network, ip: "10.11.12.13" config.vm.network :forwarded_port, guest: 8080, host: 8080end
  20. 20. Что получаем?‣ легкость создания и настройки‣ изоляция (на каждый проект свой бокс)‣ отделение среды разработки от ОС
  21. 21. или как управлять тысячей серверов‣ система менеджмента конфигурации (SCM)‣ воплощение принципа “Инфраструктура каккод”
  22. 22. Chef cookbook‣ набор действий по установке, настройке изапуску какого-то определенногопрограммного пакета‣ обычно кроссплатформенные‣ состоит из одного или нескольких рецептов(recipes)‣ коллекция от Opscode https://github.com/opscode-cookbooks
  23. 23. Установка и настройка ПО На примере Postgresql
  24. 24. Скачиваем кукбуки вручную$ mkdir cookbooks$ git clone https://github.com/opscode-cookbooks/openssl.git cookbooks/openssl$ git clone https://github.com/opscode-cookbooks/postgresql.git cookbooks/postgresql
  25. 25. Настраиваем provision VagrantfileVagrant.configure("2") do |config| ... config.vm.provision :chef_solo do |chef| chef.cookbooks_path = [cookbooks] chef.add_recipe openssl chef.add_recipe postgresql::server chef.json = { postgresql: { password: { postgres: mystrongpassword } } } endend
  26. 26. Запускаем бокс$ vagrant up
  27. 27. Что получаем?‣ совпадает с продакшеном (можно и нужноиспользовать те же инструменты напродакшене)‣ переносимость
  28. 28. Переносимость Способы распространения‣ вы можете скопировать файлы (или лучшеразместить их в git репозитории)‣ вы можете упаковать существующий бокс $ vagrant package --output=/tmp/demo.box
  29. 29. Установка и настройка ПО Продвинутый уровень :)
  30. 30. Berkshelf‣ менеджер кукбуков (как Bundler для Rubygems) http://berkshelf.com/ / ht tps://github.com - librarian-chef Альтернатива e/librarian-chef applicationsonlin
  31. 31. Устанавливаем Berkshelf перед этим нужно установить ruby (http://www.ruby-lang.org/en/downloads/)$ gem install berkshelf$ vagrant plugin install berkshelf-vagrant$ berks init
  32. 32. Добавляем кукбук postgresql Berksfile site :opscode cookbook postgresql
  33. 33. Настраиваем provision VagrantfileVagrant.configure("2") do |config| ... кукбуки berkshelf автоматически подключаются в Vagrant’е config.vm.provision :chef_solo do |chef| chef.cookbooks_path = [cookbooks] chef.add_recipe openssl chef.add_recipe postgresql::server не нужно указывать зависимости chef.json = { postgresql: { password: { postgres: mystrongpassword } } } endend
  34. 34. Запускаем бокс$ berks install$ vagrant provision
  35. 35. Что получаем?‣ никакого копирования‣ автоматическое подгрузка зависимостей‣ управление версиями
  36. 36. В итоге+ единое окружение у всех разработчиков/тестировщиков и в продакшене ★ окружение легко создать и настроить ★ окружение изолировано ★ окружение легко скопировать/перенести+ меньше время входа нового человека в проект+ быстрая адаптация к новым требованиям
  37. 37. Vagrant providers‣ VirtualBox‣ WMWare fusion‣ AWS (https://github.com/mitchellh/vagrant-aws)
  38. 38. Vagrant provisioners‣ Chef Solo‣ Chef Server‣ Puppet Standalone‣ Puppet Server‣ Shell
  39. 39. Полезные плагины‣ vagrant-vbguest (https://github.com/dotless-de/vagrant-vbguest) - следит за состоянием GuestAdditions‣ veewee (https://github.com/jedi4ever/veewee) -автоматизация создания Vagrant боксов
  40. 40. Примеры боксов для разработки‣ 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
  41. 41. Полезные настройки Используем NFS для синхронизации каталоговVagrant.configure("2") do |config| ... config.vm.synced_folder "~/projects", "/projects", :nfs => trueend стандартный механизм медленный, так что используем NFS
  42. 42. Полезные настройки Форвардинг SSH ключейVagrant.configure("2") do |config| ... config.ssh.forward_agent = trueend
  43. 43. Полезные настройки Увеличиваем объем оперативной памятиVagrant.configure("2") do |config| ... config.vm.provider :virtualbox do |vb| vb.customize ["modifyvm", :id, "--memory", 1024] endend
  44. 44. Вопросы? anton.kalyaev@gmail.com github.com/akalyaev twitter.com/AntonKalyaev

×