Помимо унификации и изоляции окружения, Vagrant позволяет автоматизировать настройку виртуальной машины под конкретный проект. Что сюда входит? Обычно для работы проекта нужно поставить базу данных, зависимости, возможно системные пакеты и тому подобное. Все это можно делать самостоятельно после vagrant ssh
, но лучше воспользоваться готовыми возможностями самого Vagrant.
Здесь стоит сказать что Vagrant позволяет выполнять настройку большим количеством способом среди которых есть несколько наиболее удобных и распространенных. О них и поговорим.
По простому мы можем попросить Vagrant выполнить shell-скрипт при запуске виртуальной машины:
Vagrant.configure("2") do |config|
config.vm.provision "shell", path: "script.sh"
end
Скрипт script.sh должен лежать в корне проекта, там же где и Vagrantfile:
# здесь набор команд для настройки виртуальной машины, например:
apt-get install -yq postgresql
# установка зависимостей для Node.JS проекта
npm install
Затем нужно выполнить команду vagrant provision
. Она возмет файл script.sh и запустит его внутри виртуальной машины:
vagrant provision
==> default: Running provisioner: shell...
default: Running: /tmp/vagrant-shell20211217-107284-behm38.sh
default: Reading package lists...
default: Building dependency tree...
default: Reading state information...
default: The following additional packages will be installed:
default: libcommon-sense-perl libjson-perl libjson-xs-perl libllvm11 libpq5
default: libsensors-config libsensors5 libtypes-serialiser-perl postgresql-13
default: postgresql-client-13 postgresql-client-common postgresql-common ssl-cert
default: sysstat
default: Suggested packages:
default: lm-sensors postgresql-doc postgresql-doc-13 isag
default: The following NEW packages will be installed:
default: libcommon-sense-perl libjson-perl libjson-xs-perl libllvm11 libpq5
default: libsensors-config libsensors5 libtypes-serialiser-perl postgresql
default: postgresql-13 postgresql-client-13 postgresql-client-common
default: postgresql-common ssl-cert sysstat
default: 0 upgraded, 15 newly installed, 0 to remove and 0 not upgraded.
default: Need to get 36.9 MB of archives.
default: After this operation, 133 MB of additional disk space will be used.
...
# Вывод довольно длинный. Но тут видно что происходит тоже самое,
# если бы мы устанавливали PostgreSQL в Ubuntu
Запуск скрипта произойдет и при выполнении команды vagrant up
. Это сделано для удобства разворачивания проекта с нуля. Фактически, мы можем реализовать полную настройку всего окружения одной командой. Так мы получаем автоматизацию настройки проекта внутри виртуальной машины.
Вам ответят команда поддержки Хекслета или другие студенты.
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
Наши выпускники работают в компаниях:
Зарегистрируйтесь или войдите в свой аккаунт