Vagrant — продукт компании HashiCorp, специализирующейся на инструментах для автоматизации разработки и эксплуатации. Он позволяет создавать изолированную среду для разработки приложений.
Первая задача любого разработчика на новом проекте - развернуть окружение. Как правило, она сводится к следующим шагам:
- Клонировать репозиторий с проектом.
- Поставить необходимые пакеты для работы (например, библиотеку для xml).
- Установить дополнительные программы, такие как база данных или очереди.
- Правильно настроить конфигурационные параметры операционной системы и проекта.
Без автоматизации подобный процесс может занимать как часы, так и целые дни, в зависимости от сложности проекта. Причем, для каждого человека в команде. И все это повторяется при смене компьютера или после переустановки операционной системы. Проблема усугубляется тем, что чем больше разработчиков на проекте, тем более разнообразные машины они используют, включая разные операционные системы. В подобном случае, процесс настройки гарантированно будет разным. На все это тратится драгоценное время каждого разработчика в команде.
Но это еще не все. Есть и другие, менее очевидные проблемы:
- Разные проекты могут требовать разные версии библиотек и языков
- Установленные программы, часто, запускаются автоматически при старте компьютера и нагружают его, даже если работа над проектом не ведется
- Любые изменения конфигурации требуют ручных обновлений от каждого программиста в команде
- У тестировщиков практически нет шансов самостоятельно развернуть подобный проект
От большинства указанных проблем можно избавиться используя правильные инструменты. Vagrant был одним из первых и хотя в большинстве ситуаций его заменил Docker, все еще существуют и всегда будут существовать ситуации, где нужна настоящая виртуализация. Например:
- Когда нужно несколько виртуальных серверов с докером, чтобы, например, объединить их в куб-кластер, их можно поднять с помощью Vagrant
- Когда нужна определенная версия или возможности ядра линукса, или дополнительные патчи/модули к нему
- Когда нужен низкоуровневый доступ к сети
- Когда нужна графика
- Когда нужен доступ к физическим устройствам
- Когда нужен более высокий уровень изоляции для безопасности
- Когда нужно более точное квотирование ресурсов
- Когда нужно деплоить и тестировать unikernel-приложения
- Когда нужна архитектура процессора, отличная от хост-системы и так далее
Теперь можно попробовать сформулировать требования к идеальному окружению:
- Изолированность. Таким образом избегаются возможные конфликты с другими окружениями (например, основной системой) и основная система остается чистой
- Повторяемость. Пересоздать рабочую среду можно за считанные минуты набрав буквально одну команду. Любое изменение распространяется сразу для всех
- Переносимость. Окружение разворачивается под любой системой одним универсальным способом
Vagrant создан для решения именно этих задач. Во многом его работа опирается на виртуализацию, для которой, по умолчанию, используется продукт VirtualBox.
В отличие от обычной работы с виртуальной машиной, когда внутри нее стоит система с графической оболочкой, Vagrant создает виртуальную машину доступную только в терминальном режиме (через командную строку), при этом сама разработка продолжается на хост-машине, а вот запуск кода на выполнение происходит внутри машины. Другими словами, редактор ставится на вашу основную систему и код лежит также в ней. Vagrant прозрачно прокидывает код внутрь машины и позволяет его запускать.
В этом курсе мы научимся "заворачивать" любой проект в Vagrant и автоматизировать настройку среды для работы.
Подготовка
Использование Vagrant подразумевает некоторую настройку операционной системы и наличие определенных знаний:
- Базовое знание сетей, понятие порта
- Нужно знать, что такое виртуализация и как работать с виртуальными машинами
- Командная строка - единственный способ взаимодействия с Vagrant. Если ваша операционная система Windows, то вам необходимо настроить её
Самостоятельная работа
- Установите систему виртуализации, например VirtualBox. Скачать его под вашу операционную систему можно здесь
- Затем скачайте установщик Vagrant под вашу операционную систему на странице Download
Откройте терминал и убедитесь что Vagrant работает:
vagrant -v Vagrant 2.2.19
Создайте репозиторий на Github vagrant-experiments
Дополнительные материалы
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.