0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Vagrant - продукт компании HashiCorp, специализирующейся на инструментах для автоматизации разработки и эксплуатации. Он позволяет создавать изолированную среду для разработки приложений.</p>
1
<p>Vagrant - продукт компании HashiCorp, специализирующейся на инструментах для автоматизации разработки и эксплуатации. Он позволяет создавать изолированную среду для разработки приложений.</p>
2
<p>Первая задача любого разработчика на новом проекте - развернуть окружение. Как правило, она сводится к следующим шагам:</p>
2
<p>Первая задача любого разработчика на новом проекте - развернуть окружение. Как правило, она сводится к следующим шагам:</p>
3
<ol><li>Клонировать репозиторий с проектом.</li>
3
<ol><li>Клонировать репозиторий с проектом.</li>
4
<li>Поставить необходимые пакеты для работы (например, библиотеку для xml).</li>
4
<li>Поставить необходимые пакеты для работы (например, библиотеку для xml).</li>
5
<li>Установить дополнительные программы, такие как база данных или очереди.</li>
5
<li>Установить дополнительные программы, такие как база данных или очереди.</li>
6
<li>Правильно настроить конфигурационные параметры операционной системы и проекта.</li>
6
<li>Правильно настроить конфигурационные параметры операционной системы и проекта.</li>
7
</ol><p>Без автоматизации подобный процесс может занимать как часы, так и целые дни, в зависимости от сложности проекта. Причем, для каждого человека в команде. И все это повторяется при смене компьютера или после переустановки операционной системы. Проблема усугубляется тем, что чем больше разработчиков на проекте, тем более разнообразные машины они используют, включая разные операционные системы. В подобном случае, процесс настройки гарантированно будет разным. На все это тратится драгоценное время каждого разработчика в команде.</p>
7
</ol><p>Без автоматизации подобный процесс может занимать как часы, так и целые дни, в зависимости от сложности проекта. Причем, для каждого человека в команде. И все это повторяется при смене компьютера или после переустановки операционной системы. Проблема усугубляется тем, что чем больше разработчиков на проекте, тем более разнообразные машины они используют, включая разные операционные системы. В подобном случае, процесс настройки гарантированно будет разным. На все это тратится драгоценное время каждого разработчика в команде.</p>
8
<p>Но это еще не все. Есть и другие, менее очевидные проблемы:</p>
8
<p>Но это еще не все. Есть и другие, менее очевидные проблемы:</p>
9
<ul><li>Разные проекты могут требовать разные версии библиотек и языков</li>
9
<ul><li>Разные проекты могут требовать разные версии библиотек и языков</li>
10
<li>Установленные программы, часто, запускаются автоматически при старте компьютера и нагружают его, даже если работа над проектом не ведется</li>
10
<li>Установленные программы, часто, запускаются автоматически при старте компьютера и нагружают его, даже если работа над проектом не ведется</li>
11
<li>Любые изменения конфигурации требуют ручных обновлений от каждого программиста в команде</li>
11
<li>Любые изменения конфигурации требуют ручных обновлений от каждого программиста в команде</li>
12
<li>У тестировщиков практически нет шансов самостоятельно развернуть подобный проект</li>
12
<li>У тестировщиков практически нет шансов самостоятельно развернуть подобный проект</li>
13
</ul><p>От большинства указанных проблем можно избавиться используя правильные инструменты. Vagrant был одним из первых и хотя в большинстве ситуаций его заменил Docker, все еще существуют и всегда будут существовать ситуации, где нужна настоящая виртуализация. Например:</p>
13
</ul><p>От большинства указанных проблем можно избавиться используя правильные инструменты. Vagrant был одним из первых и хотя в большинстве ситуаций его заменил Docker, все еще существуют и всегда будут существовать ситуации, где нужна настоящая виртуализация. Например:</p>
14
<ul><li>Когда нужно несколько виртуальных серверов с докером, чтобы, например, объединить их в куб-кластер, их можно поднять с помощью Vagrant</li>
14
<ul><li>Когда нужно несколько виртуальных серверов с докером, чтобы, например, объединить их в куб-кластер, их можно поднять с помощью Vagrant</li>
15
<li>Когда нужна определенная версия или возможности ядра линукса, или дополнительные патчи/модули к нему</li>
15
<li>Когда нужна определенная версия или возможности ядра линукса, или дополнительные патчи/модули к нему</li>
16
<li>Когда нужен низкоуровневый доступ к сети</li>
16
<li>Когда нужен низкоуровневый доступ к сети</li>
17
<li>Когда нужна графика</li>
17
<li>Когда нужна графика</li>
18
<li>Когда нужен доступ к физическим устройствам</li>
18
<li>Когда нужен доступ к физическим устройствам</li>
19
<li>Когда нужен более высокий уровень изоляции для безопасности</li>
19
<li>Когда нужен более высокий уровень изоляции для безопасности</li>
20
<li>Когда нужно более точное квотирование ресурсов</li>
20
<li>Когда нужно более точное квотирование ресурсов</li>
21
<li>Когда нужно деплоить и тестировать unikernel-приложения</li>
21
<li>Когда нужно деплоить и тестировать unikernel-приложения</li>
22
<li>Когда нужна архитектура процессора, отличная от хост-системы и так далее</li>
22
<li>Когда нужна архитектура процессора, отличная от хост-системы и так далее</li>
23
</ul><p>Теперь можно попробовать сформулировать требования к идеальному окружению:</p>
23
</ul><p>Теперь можно попробовать сформулировать требования к идеальному окружению:</p>
24
<ol><li>Изолированность. Таким образом избегаются возможные конфликты с другими окружениями (например, основной системой) и основная система остается чистой</li>
24
<ol><li>Изолированность. Таким образом избегаются возможные конфликты с другими окружениями (например, основной системой) и основная система остается чистой</li>
25
<li>Повторяемость. Пересоздать рабочую среду можно за считанные минуты набрав буквально одну команду. Любое изменение распространяется сразу для всех</li>
25
<li>Повторяемость. Пересоздать рабочую среду можно за считанные минуты набрав буквально одну команду. Любое изменение распространяется сразу для всех</li>
26
<li>Переносимость. Окружение разворачивается под любой системой одним универсальным способом</li>
26
<li>Переносимость. Окружение разворачивается под любой системой одним универсальным способом</li>
27
</ol><p>Vagrant создан для решения именно этих задач. Во многом его работа опирается на виртуализацию, для которой, по умолчанию, используется продукт<a>VirtualBox</a>.</p>
27
</ol><p>Vagrant создан для решения именно этих задач. Во многом его работа опирается на виртуализацию, для которой, по умолчанию, используется продукт<a>VirtualBox</a>.</p>
28
<p>В отличие от обычной работы с виртуальной машиной, когда внутри нее стоит система с графической оболочкой, Vagrant создает виртуальную машину доступную только в терминальном режиме (через командную строку), при этом сама разработка продолжается на хост-машине, а вот запуск кода на выполнение происходит внутри машины. Другими словами, редактор ставится на вашу основную систему и код лежит также в ней. Vagrant прозрачно прокидывает код внутрь машины и позволяет его запускать.</p>
28
<p>В отличие от обычной работы с виртуальной машиной, когда внутри нее стоит система с графической оболочкой, Vagrant создает виртуальную машину доступную только в терминальном режиме (через командную строку), при этом сама разработка продолжается на хост-машине, а вот запуск кода на выполнение происходит внутри машины. Другими словами, редактор ставится на вашу основную систему и код лежит также в ней. Vagrant прозрачно прокидывает код внутрь машины и позволяет его запускать.</p>
29
<p>В этом курсе мы научимся "заворачивать" любой проект в Vagrant и автоматизировать настройку среды для работы.</p>
29
<p>В этом курсе мы научимся "заворачивать" любой проект в Vagrant и автоматизировать настройку среды для работы.</p>
30
<h2>Подготовка</h2>
30
<h2>Подготовка</h2>
31
<p>Использование Vagrant подразумевает некоторую настройку операционной системы и наличие определенных знаний:</p>
31
<p>Использование Vagrant подразумевает некоторую настройку операционной системы и наличие определенных знаний:</p>
32
<ul><li>Базовое знание сетей, понятие порта</li>
32
<ul><li>Базовое знание сетей, понятие порта</li>
33
<li>Нужно знать,<a>что такое виртуализация</a>и как работать с виртуальными машинами</li>
33
<li>Нужно знать,<a>что такое виртуализация</a>и как работать с виртуальными машинами</li>
34
<li>Командная строка - единственный способ взаимодействия с Vagrant. Если ваша операционная система Windows, то вам необходимо<a>настроить</a>её</li>
34
<li>Командная строка - единственный способ взаимодействия с Vagrant. Если ваша операционная система Windows, то вам необходимо<a>настроить</a>её</li>
35
</ul>
35
</ul>