Зарегистрируйтесь, чтобы продолжить обучение

Жизненный цикл окружения Vagrant Vagrant: Основы

Как происходит работа с проектом в Vagrant? Здесь важно разделить то, за что Vagrant отвечает и то, где он не участвует. Начнем с кода. Работа с ним происходит снаружи. Вам будет нужно установить, как минимум, git и редактор кода. Затем все по обычной схеме: клонируем репозиторий (в который добавлен Vagrantfile), открываем его в редакторе и начинаем менять.

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

Для входа внутрь используется команда vagrant ssh. После выполнения терминал подключается к машине в домашнюю директорию пользователя по умолчанию. Традиционно в Vagrant это пользователь с именем vagrant.

# выполняется в корне проекта
vagrant ssh
Welcome to Ubuntu 21.10 (GNU/Linux 5.13.0-22-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Fri Dec 17 08:23:46 UTC 2021

  System load:  0.33              Processes:               114
  Usage of /:   3.2% of 38.71GB   Users logged in:         0
  Memory usage: 17%               IPv4 address for enp0s3: 10.0.2.15
  Swap usage:   0%


0 updates can be applied immediately.


vagrant@ubuntu-impish:~$

Здесь можно осмотреться и даже сделать что-нибудь страшное, все это останется внутри машины, которую легко пересоздать снаружи. Vagrant убирает страх экспериментов, так как легко восстановиться.

Возникает вопрос, каким образом код снаружи оказывается внутри машины и где его найти? Vagrant автоматически "прокидывает" его внутрь машины в директорию /vagrant. Поэтому первым делом после vagrant ssh нужно выполнить переход cd /vagrant:

vagrant ssh
cd /vagrant
vagrant@ubuntu-impish:/vagrant$ ls -la
total 16
drwxrwxr-x  1 vagrant vagrant 4096 Dec 17 08:16 .
drwxr-xr-x 20 root    root    4096 Dec 17 08:23 ..
drwxrwxr-x  1 vagrant vagrant 4096 Dec 17 08:16 .vagrant
-rw-rw-r--  1 vagrant vagrant 3022 Dec 17 08:15 Vagrantfile

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

Теперь мы можем устанавливать любые библиотеки, зависимости, запускать на выполнение тесты и так далее.


Самостоятельная работа

Продолжим работу с виртуальной машиной и развернём с её помощью проект на NodeJS

  1. Склонируйте репозиторий js-fastify-blog в рабочую директорию с Vagrant. Разверните проект по инструкции в README.md и запустите тесты

  2. Запушьте результат на Github. Перед коммитом нужно удалить директорию .git от js-fastify-blog. В результате должно получиться настроенное приложение и виртуальная машина, внутри которой выполняется запуск кода


Дополнительные материалы

  1. Документация Vagrant: SSH

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»