инструмент для разработки и
тестирования
Проблема
• Как легко переносить рабочее окружение
разработчика на разные платформы не вводя
ограничений?
• Как разрабатывать командой и не слышать «у
меня это не работает» ?
• Как тестировать написанное приложение на
разных системах?
• Как не засорять рабочую машину разными
версиями софта?
Vagrant CLI
Основные команды:
$ vagrant box – управление боксами
$ vagrant init – инициализация
$ vagrant up – запуск виртуального окружения
$ vagrant suspend – переведение машины в слип-режим
$ vagrant resume – восстановление из «сна»
$ vagrant halt – выключение запущенной машины
$ vagrant status – текущее состояние вагрант-окружения
$ vagrant reload – перезапуск виртуального окружения
$ vagrant destroy – остановка и удаление всех файлов вагранта
$ vagrant version – версия вагранта и проверка обновлений
$ vagrant help – справка по доступным ключам
$ vagrant push – деплой на FTP/Heroku/Local/etc
Vagrantfile
Является связующим звеном в вашем проекте, которое
описывает как именно нужно запускать виртуальную
машину и с какими настройками (сеть, бокс, провиженер)
Провиженеры
Провиженеры запускаются сразу после того, как
виртуальная машина запущена и работает. Позволяют
установить весь нужный софт для вашего проекта в
автоматическом режиме.
Провиженеры:
– File
– Shell
– Ansible
– Chef
– Puppet
– Docker
– Salt
Docker как провиженер
config.vm.provision "docker" do |d|
d.build_image "/db", args: "-t db"
d.run “db", args: "-p 3306:3306“
d.run “nodejs", args: "-p 80:8080“
end
Зачем? Легкий старт с Docker.
Или у вас Windows 
Dockerfile
FROM ubuntu:14.04
RUN apt-get -qq update
RUN export DEBIAN_FRONTEND=noninteractive && 
apt-get -y install php5 php5-fpm nginx
EXPOSE 80
RUN mkdir -p /var/www
WORKDIR /var/www
COPY . /var/www/
CMD service php5-fpm start && /usr/sbin/nginx -g "daemon
off;"
Альтернативы и проблемы
• Docker
• Virtualenv
• RVM (Ruby)
• jails
• ???
Vagrant тоже не идеален  :
• Виртуальная машина требует ресурсов и времени
• Мелкие проблемы с кроссплатформенностью
Спасибо!
Ссылки
http://vagrantup.com
http://virtualbox.com
http://vagrantcloud.com
http://docker.io
https://github.com/stanma/vagrant
https://github.com/stanma/vagrant-docker
malkin.stanislav@gmail.com
http://uawebchallenge.com
@malkinstanislav

Vagrant: инструмент для разработки и тестирования (Odessa WebCamp 2015)

  • 1.
  • 2.
    Проблема • Как легкопереносить рабочее окружение разработчика на разные платформы не вводя ограничений? • Как разрабатывать командой и не слышать «у меня это не работает» ? • Как тестировать написанное приложение на разных системах? • Как не засорять рабочую машину разными версиями софта?
  • 4.
    Vagrant CLI Основные команды: $vagrant box – управление боксами $ vagrant init – инициализация $ vagrant up – запуск виртуального окружения $ vagrant suspend – переведение машины в слип-режим $ vagrant resume – восстановление из «сна» $ vagrant halt – выключение запущенной машины $ vagrant status – текущее состояние вагрант-окружения $ vagrant reload – перезапуск виртуального окружения $ vagrant destroy – остановка и удаление всех файлов вагранта $ vagrant version – версия вагранта и проверка обновлений $ vagrant help – справка по доступным ключам $ vagrant push – деплой на FTP/Heroku/Local/etc
  • 5.
    Vagrantfile Является связующим звеномв вашем проекте, которое описывает как именно нужно запускать виртуальную машину и с какими настройками (сеть, бокс, провиженер)
  • 6.
    Провиженеры Провиженеры запускаются сразупосле того, как виртуальная машина запущена и работает. Позволяют установить весь нужный софт для вашего проекта в автоматическом режиме. Провиженеры: – File – Shell – Ansible – Chef – Puppet – Docker – Salt
  • 7.
    Docker как провиженер config.vm.provision"docker" do |d| d.build_image "/db", args: "-t db" d.run “db", args: "-p 3306:3306“ d.run “nodejs", args: "-p 80:8080“ end Зачем? Легкий старт с Docker. Или у вас Windows 
  • 8.
    Dockerfile FROM ubuntu:14.04 RUN apt-get-qq update RUN export DEBIAN_FRONTEND=noninteractive && apt-get -y install php5 php5-fpm nginx EXPOSE 80 RUN mkdir -p /var/www WORKDIR /var/www COPY . /var/www/ CMD service php5-fpm start && /usr/sbin/nginx -g "daemon off;"
  • 9.
    Альтернативы и проблемы •Docker • Virtualenv • RVM (Ruby) • jails • ??? Vagrant тоже не идеален  : • Виртуальная машина требует ресурсов и времени • Мелкие проблемы с кроссплатформенностью
  • 10.
  • 11.