Slide 1

Slide 1 text

УПРАВЛЕНИЕ РАБОЧИМ ОКРУЖЕНИЕМ С VAGRANT. БЫСТРО И ПРОСТО SPB RUG Meetup 5 Monday, April 1, 13

Slide 2

Slide 2 text

ДЕРЯБИН АНДРЕЙ @aderyabin [email protected] Monday, April 1, 13

Slide 3

Slide 3 text

Личный опыт Monday, April 1, 13

Slide 4

Slide 4 text

КЛАВИАТУРА или история о недопитом кофе и сыне Monday, April 1, 13

Slide 5

Slide 5 text

TURBO PASCAL или история о своей сборке Monday, April 1, 13

Slide 6

Slide 6 text

PORTABLE или история одной флешки Monday, April 1, 13

Slide 7

Slide 7 text

MULTI_JSON или история о потерянном времени def default_adapter return :oj if defined?(::Oj) return :yajl if defined?(::Yajl) return :json_gem if defined?(::JSON) return :gson if defined?(::Gson) // ... end Monday, April 1, 13

Slide 8

Slide 8 text

BOLGENOS или история о новой ОС Monday, April 1, 13

Slide 9

Slide 9 text

CONTINUOUS INTEGRATION • Самотестируемая сборка • Автоматизация сборки • Единый репозиторий • Быстрая сборка • Доступ до последней сборки • Каждое изменение в репозитории должно включаться в сборку на интеграционном сервере • Автоматическое развертывание • Производите тестирование в копии среды реальной эксплуатации • Простой доступ к файлам последней сборки Monday, April 1, 13

Slide 10

Slide 10 text

ВОПРОСЫ Monday, April 1, 13

Slide 11

Slide 11 text

СКОЛЬКО ВРЕМЕНИ НЕОБХОДИМО ДЛЯ РАЗВЕРТЫВАНИЯ? Monday, April 1, 13

Slide 12

Slide 12 text

ИЗОЛИРОВАНО ЛИ ОКРУЖЕНИЕ? Monday, April 1, 13

Slide 13

Slide 13 text

ВОЗМОЖНА ЛИ АВТОМАТИЗАЦИЯ? Monday, April 1, 13

Slide 14

Slide 14 text

МОЖЕТЕ ЛИ ЭКСПЕРИМЕНТИРОВАТЬ? Monday, April 1, 13

Slide 15

Slide 15 text

РЕШЕНИЕ + + Monday, April 1, 13

Slide 16

Slide 16 text

$ gem install vagrant $ gem install chef $ gem install librarian Бандлер для рецептов Monday, April 1, 13

Slide 17

Slide 17 text

УПРАВЛЕНИЕ ОБРАЗАМИ $ vagrant box list $ vagrant box add {title} {url} $ vagrant box remove {title} Monday, April 1, 13

Slide 18

Slide 18 text

Тут можно расслабиться и пойти заварить кофе Monday, April 1, 13

Slide 19

Slide 19 text

ПЕРВАЯ УСТАНОВКА $ vagrant init base $ vagrant up Monday, April 1, 13

Slide 20

Slide 20 text

ПЕРВАЯ УСТАНОВКА $ vagrant init base $ vagrant up Monday, April 1, 13

Slide 21

Slide 21 text

СТРУКТУРА Monday, April 1, 13

Slide 22

Slide 22 text

ПОЛЕЗНЫЕ НАСТРОЙКИ Vagrant::Config.run do |config| config.vm.box = "debian" config.ssh.forward_agent = true config.vm.box_url = "http://f.willianfernandes.com.br/vagrant-boxes/ DebianSqueeze64.box" config.vm.forward_port 3001, 3001 config.vm.forward_port 4000, 4000 config.vm.forward_port 5432, 5432 config.vm.forward_port 4567, 4567 config.vm.share_folder "code", "/code", "~/code", :nfs => true end Прокидываем ssh-ключи Прокидываем порты Прокидываем папки Путь до образа Monday, April 1, 13

Slide 23

Slide 23 text

НАСТРАИВАЕМ CHEF-SOLO (VAGRANTFILE) Vagrant::Config.run do |config| config.vm.provision :chef_solo do |chef| chef.cookbooks_path = ["cookbooks"] chef.add_recipe "apt" chef.add_recipe 'ruby_build' chef.add_recipe 'rbenv::user' chef.add_recipe 'postgresql' chef.json = { 'rbenv' => { 'user_installs' => [ { 'user' => 'vagrant', 'rubies' => ['1.9.3-p392'], 'global' => '1.9.3-p392' } ] } } end end Monday, April 1, 13

Slide 24

Slide 24 text

НАСТРАИВАЕМ CHEF-SOLO Monday, April 1, 13

Slide 25

Slide 25 text

НАСТРАИВАЕМ CHEF-SOLO (CHEFFILE) # encoding: utf-8 site 'http://community.opscode.com/api/v1' cookbook 'apt' cookbook 'rbenv', :git => 'git://github.com/fnichol/chef-rbenv.git' cookbook 'ruby_build', :github => 'fnichol/chef-ruby_build', :ref => 'v0.7.2' cookbook 'postgresql', :github => 'express42-cookbooks/ postgresql' Monday, April 1, 13

Slide 26

Slide 26 text

ЗАПУСК $ librarian-chef install $ vagrant reload Monday, April 1, 13

Slide 27

Slide 27 text

ПРОВЕРКА $ librarian-chef install $ vagrant reload Monday, April 1, 13

Slide 28

Slide 28 text

ДОПОЛНЕНИЯ AWS support VMware support gem vewee gem vagrantboxes Monday, April 1, 13

Slide 29

Slide 29 text

ENGINE YARD LOCAL Monday, April 1, 13

Slide 30

Slide 30 text

EY LOCAL команды Monday, April 1, 13

Slide 31

Slide 31 text

СХЕМЫ РАБОТЫ Monday, April 1, 13

Slide 32

Slide 32 text

ОДИН КО МНОГИМ Monday, April 1, 13

Slide 33

Slide 33 text

ОДИН К ОДНОМУ Monday, April 1, 13

Slide 34

Slide 34 text

ЧТО ПОЛУЧАЕМ? Monday, April 1, 13

Slide 35

Slide 35 text

ЧТО ПОЛУЧАЕМ? ✓ Быстрое развертывание на любой OС ✓ Отделение среды разработки от привязки к ноутбуку ✓ Портабельность ✓ Прозрачность ✓ Быстрый доступ ✓ Плацдарм для экспериментов ✓ Новый опыт Monday, April 1, 13

Slide 36

Slide 36 text

СПАСИБО ЗА ВНИМАНИЕ Monday, April 1, 13

Slide 37

Slide 37 text

СПИСОК ЛИТЕРАТУРЫ • http://www.martinfowler.com/articles/continuousIntegration.html • https://www.virtualbox.org/ • http://virtualboxes.org/images/ • http://www.vagrantup.com/ • http://www.vagrantbox.es/ • https://www.engineyard.com/products/local • http://yieldthought.com/post/12239282034/swapped-my-macbook-for-an-ipad Monday, April 1, 13

Slide 38

Slide 38 text

ВОПРОСЫ? Monday, April 1, 13

Slide 39

Slide 39 text

ЧИТАЙТЕ БИБОРАН!!! Monday, April 1, 13