Как происходит работа с проектом в 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
Склонируйте репозиторий js-fastify-blog в рабочую директорию с Vagrant. Разверните проект по инструкции в README.md и запустите тесты
Запушьте результат на Github. Перед коммитом нужно удалить директорию .git от js-fastify-blog. В результате должно получиться настроенное приложение и виртуальная машина, внутри которой выполняется запуск кода
Дополнительные материалы
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.