Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Работа с сетью Vagrant: Основы

Vagrant подходит для разработки абсолютно любых приложений, но так получилось, что в основном все разрабатывают веб-проекты. Главная их особенность – наличие веб-сервера, который нужно запустить для работы с проектом. Без Vagrant мы бы просто так и сделали, но с Vagrant все немного сложнее из-за виртуализации. Виртуальное окружение изолировано от хост-машины, сюда входит и сеть.

По умолчанию, все что стартует внутри виртуальной машины остается внутри виртуальной машины, но это легко изменить в Vagrantfile. Для возможности обращаться к проекту с хост-машины, нужно "пробросить порт". Предположим, что внутри Vagrant сайт стартует на порту 8080, и вы хотите обращаться к нему снаружи. Для этого достаточно добавить в конфигурацию:

Vagrant.configure("2") do |config|
  # ...
  config.vm.network "forwarded_port", guest: 8080, host: 8080
end

Чтобы изменения вступили в силу, нужно перезагрузить машину:

vagrant reload
==> default: Attempting graceful shutdown of VM...
==> default: Checking if box 'ubuntu/focal64' version '20211211.0.0' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 8080 (guest) => 8080 (host) (adapter 1)
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version of
    default: VirtualBox! In most cases this is fine, but in rare cases it can
    default: prevent things such as shared folders from working properly. If you see
    default: shared folder errors, please make sure the guest additions within the
    default: virtual machine match the version of VirtualBox you have installed on
    default: your host and reload your VM.
    default:
    default: Guest Additions Version: 6.0.0 r127566
    default: VirtualBox Version: 6.1
==> default: Mounting shared folders...
    default: /vagrant => /home/hexlet/hexlet-vagrant
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.

Что мы сделали? Мы указали Vagrant, что port 8080 с хост-машины (host), должен вести на порт 8080 гостевой машины (guest). Теперь когда мы хотим посмотреть на наш проект, то достаточно зайти внутрь Vagrant, запустить веб-сервер на 8080 порту и открыть его снаружи в браузере:

vagrant ssh
cd /vagrant
# запускаем простой веб-сервер на python
python3 -m http.server 8080 --directory /vagrant
# открываем бразуер по адресу localhost:8080
# вы должны увидеть содержимое директории с проектом

Порты можно пробрасывать в любом количестве. Для этого просто добавьте еще одну строчку в Vagrantfile:

Vagrant.configure("2") do |config|
  # ...
  config.vm.network "forwarded_port", guest: 8080, host: 8080
  # Для примера показаны разные порты
  config.vm.network "forwarded_port", guest: 3000, host: 5000
end

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

  1. Измените конфиг виртуальной машины Vagrant, чтобы можно было с локальной системы запустить приложение js-fastify-blog с которым мы работали ранее. Проверьте, что в браузере на локальной машине открывается страница по адресу http://localhost:8080

  2. Запушьте результат на Github


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

  1. Настройка сети в Vagrant

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

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

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

Об обучении на Хекслете

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

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

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

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

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

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

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

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

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

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

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

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