Доклад освещает следующие аспекты :
Базовое использование Vagrant
Vagrantfile
Vagrant боксы и интерфейс командной строки
Провиженеры (shell, ansible, Chef, Puppet etc)
Docker как провиженер
Известные проблемы и альтернативы
2. Проблема
• Как легко переносить рабочее окружение
разработчика на разные платформы не вводя
ограничений?
• Как разрабатывать командой и не слышать «у
меня это не работает» ?
• Как тестировать написанное приложение на
разных системах?
• Как не засорять рабочую машину разными
версиями софта?
3.
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 тоже не идеален :
• Виртуальная машина требует ресурсов и времени
• Мелкие проблемы с кроссплатформенностью