Что такое Vagrant?

Vagrant — это инструмент с открытым исходным кодом, который помогает нам автоматизировать создание виртуальных машин и управление ими. Короче говоря, мы можем указать конфигурацию виртуальной машины в простом файле конфигурации, и Vagrant создаст ту же виртуальную машину, используя всего одну простую команду. Он предоставляет интерфейсы командной строки для автоматизации таких задач.

Виртуальная машина — это машина, которая физически не существует, но может использоваться так же, как физический компьютер. Любая задача, которую можно выполнить на физической машине, может быть выполнена и на виртуальной машине. Но виртуальная машина построена поверх физической системы, и на одном физическом компьютере можно создать несколько виртуальных машин. Все виртуальные машины используют одно и то же оборудование, но каждая из них может иметь отдельную операционную систему. Физическая система, в которой размещены все виртуальные машины, называется хост-компьютером . Среда, которая разделяет аппаратное обеспечение хост-компьютера и виртуальные среды, называется Hypervisor или Hyper-V .

 

Структура виртуальной машины

Рис. Структура виртуальной машины

Каждая виртуальная машина должна иметь свою собственную конфигурацию, такую ​​как операционная система, процессоры, оперативная память, память жесткого диска, сеть и т. д. И создание таких виртуальных машин с ручной настройкой всех свойств — действительно напряженная задача. В этом сценарии на сцену выходит Бродяга.

Почему бродяга?
Приложение состоит из нескольких компонентов, которые необходимо правильно настроить для запуска приложения. Например, современное веб-приложение может иметь такие компоненты, как Java, JavaScript, Python и т. д. в качестве языка, MySQL, Oracle, MongoDB и т. д. в качестве баз данных, другие компоненты, такие как веб-сервер, балансировщик нагрузки, шлюз API, очередь сообщений и т. д. , исходя из требований.

До Vagrant все эти компоненты нужно было настраивать вручную. В процессе установки возникает много вопросов:

  • В каждой машине настройку нужно производить отдельно, что занимает много времени.
  • Ручная настройка может быть ошибочной, что необходимо каждый раз отлаживать и исправлять.
  • Среда разработки, тестирования и производства должны быть идентичными. Но из-за этой ручной установки и настройки компонентов может быть небольшая разница, которая причиняет нам много боли, потому что в таком сценарии приложение может работать в среде разработки, но сталкиваться с проблемами в рабочей среде.

Vagrant — это современное решение всех этих проблем. Вместо того, чтобы настраивать все компоненты вручную, Vagrant предоставляет нам возможность использовать один файл конфигурации (называемый Vagrantfile), в котором указаны все необходимые программные компоненты и информация об их конфигурации. Таким образом, хотя один и тот же файл конфигурации выполняется на нескольких машинах, Vagrant создает виртуальную машину поверх каждой физической машины, автоматически устанавливает и настраивает все упомянутые компоненты и предоставляет готовую к работе виртуальную машину. И так как это обеспечивает виртуальную машину, то нет необходимости беспокоиться о том, будет ли работать один программный компонент в ОС Windows или ОС Linux и какой должна быть их конфигурация, а также разработчик, QA оба работают на отдельной машине, но обе машины должны иметь полностью идентичная установка.

Терминология Vagrant: Прежде чем углубляться в детали установки и использования Vagrant, давайте сначала обсудим основные термины, связанные с Vagrant.

1. Vagrant Box: базовым блоком настройки Vagrant является Vagrant Box. Как и образ Docker, Vagrant Box представляет собой автономный образ операционной системы . Точнее, это упакованная виртуальная машина. Вместо того, чтобы устанавливать операционную систему и все программные компоненты внутри виртуальной машины вручную,

  • Бродячий ящик — это готовый базовый образ среды виртуальной машины.
  • Например, если есть необходимость получить какую-то виртуальную машину со всеми настройками разработки приложений Spring Boot по умолчанию, можно получить тот же Vagrant Box. Все, что требуется сделать, это загрузить Vagrant Box и запустить его. Vagrant создает виртуальную машину, и работа по разработке может быть начата немедленно.
  • Много Vagrant Box присутствует в каталоге коробок Vagrant Cloud , который мы можем использовать в качестве базового образа для нашей собственной виртуальной машины.

2. Vagrant File: Vagrant поддерживает один файл конфигурации под названием Vagrantfile , в котором упоминаются все конфигурации виртуальной машины. И Vagrant создает виртуальную машину с той же конфигурацией, которая указана в файле. Даже если есть необходимость установить какое-то программное обеспечение на ВМ, можно указать его в Vagrantfile, и Vagrant скачает и установит то же самое для нас. 

Давайте рассмотрим шаги по подготовке одной виртуальной машины с помощью Vagrant.

Монтаж

Шаг 1: Скачайте Vagrant для вашей операционной системы и установите его в систему.
Шаг 2: Проверьте бродячую установку с помощью команды vagrant -v в командной строке. Он покажет установленную версию нашего бродяги, как показано ниже.
Подтвердить бродягу

Шаг 3: Загрузите Virtual Box в зависимости от вашей операционной системы и установите его в систему.

Настройка бродячего проекта

Шаг 1: Создайте папку, в которой мы хотим сохранить все файлы, связанные с Vagrant.
Шаг 2: Создайте файл с именем Vagrantfile для упоминания конфигурации виртуальной машины. Поскольку Vagrant используется впервые после установки, рекомендуется позволить Vagrant создать для нас файл с минимальной конфигурацией. И модификация может быть сделана позже.
Шаг 3: Откройте PowerShell (для Windows) или Терминал (для Linux) и перейдите в папку, созданную на шаге 1.
Шаг 4: Запустите команду vagrant init bento/ubuntu-16.04 и дождитесь завершения выполнения.
Эта команда инициализирует каталог с указанным Vagrant Box (bento/ubuntu-16.04). Мы найдем Vagrantfile, созданный в этом месте. Если открыть, то вы увидите, что некоторая примерная конфигурация уже упоминалась с соответствующими примерами, и все они прокомментированы. Любой может проверить это, чтобы создать виртуальную машину с более конкретной конфигурацией. Часть важной информации, упомянутой в файле, можно увидеть.

config.vm.box = “bento/ubuntu-16.04”

Это Vagrant Box, о котором упоминалось при инициализации.

Загрузите виртуальную машину с помощью Vagrant: 

vagrant up

Эта команда возьмет Vagrantfile и предоставит одну виртуальную машину со всеми упомянутыми конфигурациями. На данный момент он загружает виртуальную машину с версией операционной системы Ubuntu-16.04.

SSH в виртуальную машину

Шаг 1: Теперь виртуальная машина создана. Итак, чтобы попасть в него, запустите команду vagrant ssh . После выполнения этой команды вы находитесь внутри только что созданной виртуальной машины. Теперь все что угодно можно сделать внутри виртуальной машины через этот терминал. Будет виден следующий экран:

бродячий ssh

Шаг 2: Чтобы выйти из виртуальной машины, выполните команду logout . Терминал снова вернется к хост-компьютеру.

выйти

Очистить Vagrant:

Шаг 1: Чтобы выключить виртуальную машину с помощью Vagrant, выполните команду vagrant halt . Эта команда выключит виртуальную машину и снова, чтобы включить виртуальную машину, запустите команду vagrant up .

бродячий хромой

Шаг 2: Чтобы выключить виртуальную машину, сохранив ее текущее состояние, запустите vagrant suspend. В этом случае, когда виртуальная машина снова запускается с помощью vagrant up , система запустится с того же места, где она остановилась. Всю несохраненную работу можно восстановить.
Но в этом случае ВМ не будет освобождать ресурсы от хост-машины, даже если потребуется больше места на диске для хранения текущего состояния собственной оперативной памяти внутри хост-машины.

бродячий приостановить

Шаг 3: Чтобы удалить виртуальную машину со всеми ее ресурсами, запустите vagrant destroy . Эта команда выключит виртуальную машину и удалит ее из хост-системы.

бродячий уничтожить

Настройка примера проекта в виртуальной машине с использованием Vagrant:

Давайте установим веб-сервер внутри виртуальной машины и получим к нему доступ с вашего хост-компьютера. Выполните следующие действия:

Шаг 1: Сделайте vagrant ssh, чтобы войти в созданную виртуальную машину.
Шаг 2: Внутри виртуальной машины вручную установите веб-сервер, скажем, Nginx. Запустите ниже команды-

sudo apt update  sudo apt install nginx

Шаг 3. Проверьте, запущена ли служба Nginx, с помощью команды:

systemctl status nginx

Проверить сервис Nginx

Если служба не запущена, запустите службу с помощью команды

sudo service nginx start

Примечание . Описанную выше установку также можно выполнить с помощью Vagrantfile, но пока давайте воспользуемся функцией vagrant ssh .

Шаг 4: Перейдите в /var/www/html и создайте один образец HTML-файла, скажем, index1.html , как показано ниже:

<!DOCTYPE html>
<html>
  <body>
    <h2 style = "color: green"> Welcome to GeeksforGeeks </h2>
    <body>
</html>

Шаг 5: Теперь Nginx работает на порту 80 по умолчанию внутри виртуальной машины. Но для доступа к серверу Nginx виртуальной машины с хост-компьютера необходимо сопоставить порт 80 виртуальной машины с каким-либо портом на хост-компьютере. И это сопоставление называется Port Forwarding . Переадресацию портов можно выполнить вручную с помощью Virtual Box Manager. Но поскольку здесь используется Vagrant, давайте сделаем это с помощью Vagrantfile.
Шаг 6: Откройте Vagrantfile и добавьте строку

config.vm.network “forwarded_port”, guest: 80, host: 85

после строки

config.vm.box = “bento/ubuntu-16.04”

и сохраните файл.

Здесь в основном 80-й порт виртуальной машины сопоставлен с 85-м портом хост-системы.
Шаг 7: Выйдите из виртуальной машины в PowerShell или терминале и запустите команду vagrant reload , чтобы перезагрузить новый параметр, который мы добавили в Vagrantfile. Во время перезагрузки можно увидеть перенаправленный порт, как показано ниже. На приведенном ниже снимке первый перенаправляемый порт — это тот, который был недавно добавлен, а второй — порт по умолчанию для подключения SSH.

бродячая перезагрузка

Шаг 8: Проверьте, запущен ли Nginx. Теперь к серверу Nginx виртуальной машины можно получить доступ, используя порт 85 из хост-системы. Созданный выше файл HTML можно получить, используя URL-адрес localhost:85/index1.html. 

Преимущества бродяги:

  • Vagrant бесплатен и имеет открытый исходный код.
  • Он предлагает чрезвычайно эффективную структуру проекта среды разработки/тестирования.
  • Vagrant имеет большое разнообразие ящиков сообщества и плагинов.

Недостатки бродяги:

  • Обновления синтаксиса имеют серьезные последствия для совместимости плагинов.
  • Поддержка сообщества — это хорошо, но это длительный процесс.
  • Крупные обновления внесли несколько серьезных ошибок с последствиями в проекты разработчиков.

Перейти к верхней панели