SlideShare a Scribd company logo
1 of 45
Download to read offline
БЫСТРОЕ
РАЗВЕРТЫВАНИЕ
СРЕДЫ
РАЗРАБОТКИ С
	Антон Каляев
”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/98zi6
$   ./configure && make
$   sudo make install
$   пытаемся запустить хотя бы один тест
$   ищем помощи у коллег
$   MAGIC_CONST=23 prepare-run --fix-missing
$   run
Мы в ****
Почему?

‣ создавать рабочие окружения тяжело
‣ распространять еще сложнее (README не
установит требуемое ПО за нас)
‣ никакой изоляции (конфликтующие
бинарники)
‣ никаких гарантий (“Но это работает на моей
машине”)
Решение
Идея
                 ОС




Виртуальная ОС        Виртуальная ОС
Что такое Vagrant?


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



     остановка VM
  vagrant halt


  перезагрузка VM
  vagrant reload


доступ по ssh
  vagrant ssh

        старт VM
           vagrant up
Устанавливаем Vagrant

1. Устанавливаем 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 init {title}
$ vagrant up
Vagrant
               Базовый конфиг (Vagrantfile)




Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu"
  config.vm.box_url = "https://github.com/downloads/roderik/
VagrantQuantal64Box/quantal64.box"
end
Vagrant
Синхронизация каталогов между гостевой и родной ОС



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

  config.vm.synced_folder "~/projects", "/projects"
end
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: 8080
end
Что получаем?


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




‣ система менеджмента конфигурации (SCM)
‣ воплощение принципа “Инфраструктура как
код”
Chef cookbook
‣ набор действий по установке, настройке и
запуску какого-то определенного
программного пакета
‣ обычно кроссплатформенные
‣ состоит из одного или нескольких рецептов
(recipes)
‣ коллекция от Opscode https://github.com/
opscode-cookbooks
Установка и настройка ПО
      На примере Postgresql
Скачиваем кукбуки
                       вручную



$ mkdir cookbooks
$ git clone https://github.com/opscode-cookbooks/
openssl.git cookbooks/openssl
$ git clone https://github.com/opscode-cookbooks/
postgresql.git cookbooks/postgresql
Настраиваем provision
                Vagrantfile
Vagrant.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'
        }
      }
    }
  end
end
Запускаем бокс



$ vagrant up
Что получаем?


‣ совпадает с продакшеном (можно и нужно
использовать те же инструменты на
продакшене)
‣ переносимость
Переносимость
            Способы распространения




‣ вы можете скопировать файлы (или лучше
разместить их в git репозитории)
‣ вы можете упаковать существующий бокс
    $ vagrant package --output=/tmp/demo.box
Установка и настройка ПО
     Продвинутый уровень :)
Berkshelf



‣ менеджер кукбуков (как Bundler для Ruby
gems) http://berkshelf.com/

                                                                /
                                            ht tps://github.com
                          - librarian-chef
             Альтернатива             e/librarian-chef
                    applicationsonlin
Устанавливаем Berkshelf
             перед этим нужно установить ruby
          (http://www.ruby-lang.org/en/downloads/)


$ gem install berkshelf
$ vagrant plugin install berkshelf-vagrant
$ berks init
Добавляем кукбук postgresql
             Berksfile



       site :opscode

       cookbook 'postgresql'
Настраиваем provision
                     Vagrantfile
Vagrant.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'
        }
      }
    }
  end
end
Запускаем бокс


$ 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) - следит за состоянием Guest
Additions
‣ veewee (https://github.com/jedi4ever/veewee) -
автоматизация создания 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
Полезные настройки
    Используем NFS для синхронизации каталогов



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

  config.vm.synced_folder "~/projects", "/projects", :nfs => true
end


              стандартный механизм медленный, так
                      что используем NFS
Полезные настройки
                 Форвардинг SSH ключей




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

  config.ssh.forward_agent = true
end
Полезные настройки
         Увеличиваем объем оперативной памяти



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

  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--memory", 1024]
  end
end
Вопросы?


     anton.kalyaev@gmail.com
           github.com/akalyaev
     twitter.com/AntonKalyaev

More Related Content

What's hot

Депрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчасДепрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчасRuslan Sharipov
 
My talk on Docker from Moscow Django Meetup #25
My talk on Docker from Moscow Django Meetup #25My talk on Docker from Moscow Django Meetup #25
My talk on Docker from Moscow Django Meetup #25Alex Chistyakov
 
Docker : что это, зачем, и как им пользоваться
Docker : что это, зачем, и как им пользоватьсяDocker : что это, зачем, и как им пользоваться
Docker : что это, зачем, и как им пользоватьсяСергей Ладыгин
 
Docker - счастье для хомячка или ника?
Docker - счастье для хомячка или ника?Docker - счастье для хомячка или ника?
Docker - счастье для хомячка или ника?Ruslan Sharipov
 
Docker - быстро, просто, наглядно
Docker - быстро, просто, наглядноDocker - быстро, просто, наглядно
Docker - быстро, просто, наглядноFallenKain
 
Docker контейнерная революция
Docker контейнерная революцияDocker контейнерная революция
Docker контейнерная революцияGetDev.NET
 
Инфраструктура распределенных приложений на Node.js
Инфраструктура распределенных приложений на Node.jsИнфраструктура распределенных приложений на Node.js
Инфраструктура распределенных приложений на Node.jsStanislav Gumeniuk
 
Введение в Docker
Введение в Docker Введение в Docker
Введение в Docker Andrey Markelov
 
Кратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русскиКратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русскиOSLL
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ciАлександр Сигачев
 
Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentbit(c++)    fluentd(ruby) kibana(javascript)Elasticsearch(java) fluentbit(c++)    fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)Александр Сигачев
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupBadoo Development
 
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Badoo Development
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»WrikeTechClub
 
Ansible in the enterprise
Ansible in the enterpriseAnsible in the enterprise
Ansible in the enterpriseAlex Chistyakov
 
Алексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersАлексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersAleksey Fomkin
 
«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр КолесеньIT Share
 

What's hot (20)

Депрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчасДепрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчас
 
Docker. Основы
Docker. ОсновыDocker. Основы
Docker. Основы
 
Docker for JS people
Docker for JS peopleDocker for JS people
Docker for JS people
 
My talk on Docker from Moscow Django Meetup #25
My talk on Docker from Moscow Django Meetup #25My talk on Docker from Moscow Django Meetup #25
My talk on Docker from Moscow Django Meetup #25
 
Docker : что это, зачем, и как им пользоваться
Docker : что это, зачем, и как им пользоватьсяDocker : что это, зачем, и как им пользоваться
Docker : что это, зачем, и как им пользоваться
 
Docker - счастье для хомячка или ника?
Docker - счастье для хомячка или ника?Docker - счастье для хомячка или ника?
Docker - счастье для хомячка или ника?
 
Docker - быстро, просто, наглядно
Docker - быстро, просто, наглядноDocker - быстро, просто, наглядно
Docker - быстро, просто, наглядно
 
Docker контейнерная революция
Docker контейнерная революцияDocker контейнерная революция
Docker контейнерная революция
 
Инфраструктура распределенных приложений на Node.js
Инфраструктура распределенных приложений на Node.jsИнфраструктура распределенных приложений на Node.js
Инфраструктура распределенных приложений на Node.js
 
Введение в Docker
Введение в Docker Введение в Docker
Введение в Docker
 
Node.js (RichClient)
 Node.js (RichClient) Node.js (RichClient)
Node.js (RichClient)
 
Кратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русскиКратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русски
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ci
 
Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentbit(c++)    fluentd(ruby) kibana(javascript)Elasticsearch(java) fluentbit(c++)    fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
 
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»
 
Ansible in the enterprise
Ansible in the enterpriseAnsible in the enterprise
Ansible in the enterprise
 
Алексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersАлексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web Workers
 
«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень
 

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

Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Nikita Borzykh
 
Виртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаВиртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаOpen-IT
 
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько разRootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько разTimur Batyrshin
 
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...Ontico
 
Vagrant: плагины и гастрономический фестиваль
Vagrant: плагины и гастрономический фестивальVagrant: плагины и гастрономический фестиваль
Vagrant: плагины и гастрономический фестивальNikita Borzykh
 
GitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с KubernetesGitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с KubernetesVictor Login
 
VVV. Сервер для WordPress-разработчика
 VVV. Сервер для WordPress-разработчика VVV. Сервер для WordPress-разработчика
VVV. Сервер для WordPress-разработчикаKolya Korobochkin
 
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"LogeekNightUkraine
 
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Ontico
 
Михаил Юматов: SaltStack
Михаил Юматов: SaltStackМихаил Юматов: SaltStack
Михаил Юматов: SaltStackit-people
 
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayAndrey Rebrov
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к AnsibleIvan Grishaev
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктуройdddpaul
 
Vagrant и chef. от dev до deploy
Vagrant и chef. от dev до deployVagrant и chef. от dev до deploy
Vagrant и chef. от dev до deployzykin-ilya
 
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшна
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшнаCI/CD-приложений на Tarantool: от пустого репозитория — до продакшна
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшнаMail.ru Group
 
Application deployment & configuration management
Application deployment & configuration managementApplication deployment & configuration management
Application deployment & configuration managementAlexander Kirillov
 

Similar to Антон Каляев — Быстрое развертывание среды с Vagrant (20)

Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.
 
Виртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаВиртуализация как инструмент разработчика
Виртуализация как инструмент разработчика
 
Jenkins в docker in mesos in ...
Jenkins в docker in mesos in ...Jenkins в docker in mesos in ...
Jenkins в docker in mesos in ...
 
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько разRootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
 
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
 
Vagrant: плагины и гастрономический фестиваль
Vagrant: плагины и гастрономический фестивальVagrant: плагины и гастрономический фестиваль
Vagrant: плагины и гастрономический фестиваль
 
GitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с KubernetesGitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с Kubernetes
 
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
 
Масштабируемый DevOps
Масштабируемый DevOpsМасштабируемый DevOps
Масштабируемый DevOps
 
VVV. Сервер для WordPress-разработчика
 VVV. Сервер для WordPress-разработчика VVV. Сервер для WordPress-разработчика
VVV. Сервер для WordPress-разработчика
 
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
 
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
 
Михаил Юматов: SaltStack
Михаил Юматов: SaltStackМихаил Юматов: SaltStack
Михаил Юматов: SaltStack
 
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps way
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к Ansible
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктурой
 
Vagrant и chef. от dev до deploy
Vagrant и chef. от dev до deployVagrant и chef. от dev до deploy
Vagrant и chef. от dev до deploy
 
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшна
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшнаCI/CD-приложений на Tarantool: от пустого репозитория — до продакшна
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшна
 
Application deployment & configuration management
Application deployment & configuration managementApplication deployment & configuration management
Application deployment & configuration management
 
Git for you
Git for youGit for you
Git for you
 

More from Daria Oreshkina

Антон Веретенников и Илья Семаков. Презентация
Антон Веретенников и Илья Семаков. ПрезентацияАнтон Веретенников и Илья Семаков. Презентация
Антон Веретенников и Илья Семаков. ПрезентацияDaria Oreshkina
 
Валкин, Мокевнин — Развитие IT-среды в Ульяновске
Валкин, Мокевнин — Развитие IT-среды в УльяновскеВалкин, Мокевнин — Развитие IT-среды в Ульяновске
Валкин, Мокевнин — Развитие IT-среды в УльяновскеDaria Oreshkina
 
Максим Семенкин — Открытие
Максим Семенкин — ОткрытиеМаксим Семенкин — Открытие
Максим Семенкин — ОткрытиеDaria Oreshkina
 
Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!Daria Oreshkina
 
Кирилл Мокевнин — Ментальное программирование
Кирилл Мокевнин — Ментальное программированиеКирилл Мокевнин — Ментальное программирование
Кирилл Мокевнин — Ментальное программированиеDaria Oreshkina
 
Дмитрий Еманов — Под капотом серверного ПО
Дмитрий Еманов — Под капотом серверного ПОДмитрий Еманов — Под капотом серверного ПО
Дмитрий Еманов — Под капотом серверного ПОDaria Oreshkina
 
Иван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать житьИван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать житьDaria Oreshkina
 
Лев Валкин — Программируем функционально
Лев Валкин — Программируем функциональноЛев Валкин — Программируем функционально
Лев Валкин — Программируем функциональноDaria Oreshkina
 
Александр Жарков — Эволюция команды разработки: взгляд изнутри
Александр Жарков — Эволюция команды разработки: взгляд изнутриАлександр Жарков — Эволюция команды разработки: взгляд изнутри
Александр Жарков — Эволюция команды разработки: взгляд изнутриDaria Oreshkina
 
Алексей Шалдышев — Проектное управление
Алексей Шалдышев — Проектное управлениеАлексей Шалдышев — Проектное управление
Алексей Шалдышев — Проектное управлениеDaria Oreshkina
 
Артём Рудаковский — Как мы электронное правительство делали
Артём Рудаковский — Как мы электронное правительство делалиАртём Рудаковский — Как мы электронное правительство делали
Артём Рудаковский — Как мы электронное правительство делалиDaria Oreshkina
 
Наталья Желнова — Как обзавестись аналитиками и получить от них пользу в проекте
Наталья Желнова — Как обзавестись аналитиками и получить от них пользу в проектеНаталья Желнова — Как обзавестись аналитиками и получить от них пользу в проекте
Наталья Желнова — Как обзавестись аналитиками и получить от них пользу в проектеDaria Oreshkina
 
Асхат Уразбаев — Value Stream Mapping
Асхат Уразбаев — Value Stream MappingАсхат Уразбаев — Value Stream Mapping
Асхат Уразбаев — Value Stream MappingDaria Oreshkina
 
Алексей Ситников. Итоговая презентация группы « Социальная политика». 19 апреля
Алексей Ситников. Итоговая презентация группы « Социальная политика». 19 апреляАлексей Ситников. Итоговая презентация группы « Социальная политика». 19 апреля
Алексей Ситников. Итоговая презентация группы « Социальная политика». 19 апреляDaria Oreshkina
 
Булат Столяров. Итоговая презентация дискуссионной группы «Защита прав гражд...
Булат Столяров. Итоговая презентация дискуссионной группы «Защита  прав гражд...Булат Столяров. Итоговая презентация дискуссионной группы «Защита  прав гражд...
Булат Столяров. Итоговая презентация дискуссионной группы «Защита прав гражд...Daria Oreshkina
 

More from Daria Oreshkina (15)

Антон Веретенников и Илья Семаков. Презентация
Антон Веретенников и Илья Семаков. ПрезентацияАнтон Веретенников и Илья Семаков. Презентация
Антон Веретенников и Илья Семаков. Презентация
 
Валкин, Мокевнин — Развитие IT-среды в Ульяновске
Валкин, Мокевнин — Развитие IT-среды в УльяновскеВалкин, Мокевнин — Развитие IT-среды в Ульяновске
Валкин, Мокевнин — Развитие IT-среды в Ульяновске
 
Максим Семенкин — Открытие
Максим Семенкин — ОткрытиеМаксим Семенкин — Открытие
Максим Семенкин — Открытие
 
Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!
 
Кирилл Мокевнин — Ментальное программирование
Кирилл Мокевнин — Ментальное программированиеКирилл Мокевнин — Ментальное программирование
Кирилл Мокевнин — Ментальное программирование
 
Дмитрий Еманов — Под капотом серверного ПО
Дмитрий Еманов — Под капотом серверного ПОДмитрий Еманов — Под капотом серверного ПО
Дмитрий Еманов — Под капотом серверного ПО
 
Иван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать житьИван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать жить
 
Лев Валкин — Программируем функционально
Лев Валкин — Программируем функциональноЛев Валкин — Программируем функционально
Лев Валкин — Программируем функционально
 
Александр Жарков — Эволюция команды разработки: взгляд изнутри
Александр Жарков — Эволюция команды разработки: взгляд изнутриАлександр Жарков — Эволюция команды разработки: взгляд изнутри
Александр Жарков — Эволюция команды разработки: взгляд изнутри
 
Алексей Шалдышев — Проектное управление
Алексей Шалдышев — Проектное управлениеАлексей Шалдышев — Проектное управление
Алексей Шалдышев — Проектное управление
 
Артём Рудаковский — Как мы электронное правительство делали
Артём Рудаковский — Как мы электронное правительство делалиАртём Рудаковский — Как мы электронное правительство делали
Артём Рудаковский — Как мы электронное правительство делали
 
Наталья Желнова — Как обзавестись аналитиками и получить от них пользу в проекте
Наталья Желнова — Как обзавестись аналитиками и получить от них пользу в проектеНаталья Желнова — Как обзавестись аналитиками и получить от них пользу в проекте
Наталья Желнова — Как обзавестись аналитиками и получить от них пользу в проекте
 
Асхат Уразбаев — Value Stream Mapping
Асхат Уразбаев — Value Stream MappingАсхат Уразбаев — Value Stream Mapping
Асхат Уразбаев — Value Stream Mapping
 
Алексей Ситников. Итоговая презентация группы « Социальная политика». 19 апреля
Алексей Ситников. Итоговая презентация группы « Социальная политика». 19 апреляАлексей Ситников. Итоговая презентация группы « Социальная политика». 19 апреля
Алексей Ситников. Итоговая презентация группы « Социальная политика». 19 апреля
 
Булат Столяров. Итоговая презентация дискуссионной группы «Защита прав гражд...
Булат Столяров. Итоговая презентация дискуссионной группы «Защита  прав гражд...Булат Столяров. Итоговая презентация дискуссионной группы «Защита  прав гражд...
Булат Столяров. Итоговая презентация дискуссионной группы «Защита прав гражд...
 

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

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