четверг, 27 апреля 2017 г.

Быстрая поставка среды для разработки

В особо сложных проектах новому человеку может понадобиться недели, чтобы запустить среду для разработки проекта.
Цель сделать автоматическую, надежную, распространяемую, повторяемую, легкую в использовании и находящуюся под системой контроля версий.
Для этого существует Vargrant. Но сейчас его актуальность явно понизилась с появлением docker toolbox для всех основных платформ ОС - потому что все тоже самое можно уже сделать docker-compose-ами.

Он управляет виртуальными машинами и создает в них необходимые образы для запуска - одной-несколько VMs.

Есть две архитектуры обеспечения такой готовой поставляемой среды разработки

Кухонная раковина

- хозяйская ОС запускает только виртуалку/ки
- в виртуалке находится код
- вирутуалка с графикой
- IDE/редактор запускается в вирутуалке
- в виртуалке настроен процесс заливки
- в виртуалке настроены необходимые сети

Легкий сервер

- IDE/редактор запускается в хозяйской ОС
- хозяйка запускает VM, но без графики
- используются разделяемые папки, так изменяя код в хозяйке изменения попадают в виртуалку
- виртуалка только для локальной заливки

Концепции Vargrant

Boxes - контейнер для операционной системы, они имеют версии, и хранятся в у юзера на хозяйской ОС ~/.vagrant.d/boxes/, каждый бокс обеспечен одним провайдером.

Providers - поставщики виртуальных машин, на которые можно установить ОС: VirtualBox(deafult), VMWare; Parallels; Cloud: AWS, Azure; Docker...

Provisioning - поставка того, что нужно еще, кроме самого чистого образа с операционкой, под проект, который мы обеспечиваем быстрой средой разработки. Это обновление ОС, установка расширенных пакетов, приложений, внесение файлов конфигурации и другое. Они могут поставляться:
- файлы;
- shell;
- Chef (Solo / Client)
- Puppet (Apply / Agent)
- Docker

Plugins - дают возможность добавить кастомные провайдеров, провизионеров, саму поставку, добавить поддержку облачных сервисов и другое.


Если мы запускаем vagrant up и в текущей директории нет Vagrantfile, то утилита просмотрит до самого корня файловой системы в поиске этого файла.

Vagrantfile вообще-то не один он соединяется с перезагрузкой из нескольких:
1) из бокса
2) ~/.vagrant.d/Vagrantfile
3) главный/проектный файл
4) Multi-VM overrides
5) Provider overrides


Комментариев нет:

Отправить комментарий