HTML Diff
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>