Thank you for reading this post, don't forget to subscribe!
Vagrant - это инструмент командной строки с открытым исходным кодом для создания и управления средами виртуальных машин. По умолчанию Vagrant может предоставлять компьютеры поверх VirtualBox, Hyper-V и Docker. Другие поставщики, такие как Libvirt (KVM), VMware и AWS, могут быть установлены через систему плагинов Vagrant.
Vagrant в основном используется разработчиками для настройки среды разработки, соответствующей производственной среде.
Убедитесь, что вы выполнили следующие предварительные условия, прежде чем продолжить этот учебник:
- установлен VirtualBox на вашем компьютере CentOS.
- Вы вошли как пользователь с привилегиями sudo .
УСТАНОВКА VAGRANT НА CENTOS
На момент написания этой статьи последняя стабильная версия Vagrant - это версия 2.2.6. Прежде чем перейти к следующему шагу, посетите страницу загрузок Vagrant и проверьте, доступна ли новая версия Vagrant.
Используйте следующую команду для установки Vagrant на вашем компьютере CentOS:
1 |
sudo yum install https://releases.hashicorp.com/vagrant/2.2.6/vagrant_2.2.6_x86_64.rpm |
Чтобы убедиться, что установка прошла успешно, введите следующую команду, которая выведет версию Vagrant:
1 |
vagrant --version |
Вывод должен выглядеть примерно так:
1 2 |
Vagrant 2.2.6 |
НАЧАЛО РАБОТЫ С VAGRANT
Теперь, когда Vagrant установлен в вашей системе CentOS, мы покажем вам, как создать среду разработки.
Мы будем использовать провайдера VirtualBox, который является поставщиком по умолчанию для Vagrant.
Первым шагом является создание каталога, который будет корневым каталогом проекта, и файл Vagrantfile. Vagrantfile - это файл Ruby, который описывает, как настроить и подготовить виртуальную машину.
Создайте каталог проекта и переключитесь на него:
mkdir ~/my-vagrant-project
cd ~/my-vagrant-project
Следующим шагом является инициализация нового Vagrantfile с помощью vagrant init
команды и указание поля, которое вы хотите использовать.
Коробки представляют собой формат пакета для сред Vagrant и зависят от поставщика. Вы можете найти список общедоступных ящиков Vagrant на странице каталога приложений Vagrant .
В этом примере мы будем использовать ubuntu/bionic64
поле. Запустите следующую команду, чтобы инициализировать новый Vagrantfile:
1 |
vagrant init ubuntu/bionic64 |
1 2 3 4 5 |
A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant. |
Вы можете открыть Vagrantfile , прочитать комментарии и выполнить настройку в соответствии с вашими потребностями.
Запустите vagrant up
команду для создания и настройки виртуальной машины в соответствии с Vagrantfile.
1 |
vagrant up |
1 2 3 4 5 6 |
==> default: Configuring and enabling network interfaces… default: SSH address: 192.168.121.24:22 default: SSH username: vagrant default: SSH auth method: private key ==> default: Rsyncing folder: /home/linuxize/Vagrant/my-vagrant-project/ => /vagrant |
Как видно из приведенного выше вывода, Vagrant также монтирует каталог проекта на /vagrant
виртуальной машине, что позволяет вам работать с файлами вашего проекта на вашем хост-компьютере.
Для SSH в виртуальной машине просто запустите:
1 |
vagrant ssh |
Вы можете остановить виртуальную машину с помощью следующей команды:
1 |
vagrant halt |
Следующая команда останавливает машину, если она работает, и уничтожает все ресурсы, которые были созданы во время создания машины:
1 |
vagrant destroy |
Подключение
Для входа внутрь используется команда vagrant ssh
. После выполнения терминал подключается к машине в домашнюю директорию пользователя по умолчанию. Традиционно в вагранте это пользователь с именем vagrant
. Теперь необходимо выполнить переход в папку /vagrant
. Именно в ней окажется код проекта.
Дальше можно действовать по старинке. Поставить все необходимые пакеты и зависимости, а затем запустить проект. Если это веб-сайт, то он запустится на определенном порту. По умолчанию все, что стартует внутри виртуальной машины, доступно только внутри. Для возможности обращаться к сайту с хост машины (через ваш любимый браузер), необходимо прокинуть соответствующий порт наружу. Об этом достаточно подробно рассказано в документации. Предположим, что внутри вагранта сайт стартует на порту 8080, и вы хотите обращаться к нему снаружи. Для этого достаточно добавить в конфигурацию:
1 2 3 4 5 |
<span class="no">Vagrant</span><span class="p">.</span><span class="nf">configure</span><span class="p">(</span><span class="s2"><span class="hljs-string">"2"</span></span><span class="p">)</span> <span class="k"><span class="hljs-keyword">do</span></span> <span class="o"><span class="hljs-params">|</span></span><span class="n"><span class="hljs-params">config</span></span><span class="o"><span class="hljs-params">|</span></span> <span class="c1"><span class="hljs-comment"># …</span></span> <span class="n">config</span><span class="p">.</span><span class="nf">vm</span><span class="p">.</span><span class="nf">network</span> <span class="s2"><span class="hljs-string">"forwarded_port"</span></span><span class="p">,</span> <span class="ss"><span class="hljs-symbol">guest:</span> </span><span class="mi"><span class="hljs-number">8080</span></span><span class="p">,</span> <span class="ss"><span class="hljs-symbol">host:</span> </span><span class="mi"><span class="hljs-number">8080</span></span> <span class="k"><span class="hljs-keyword">end</span></span> |
Изменения применяются после перезагрузки машины. Для этого достаточно выполнить команду vagrant reload
.
Остановка
В конце работы не забудьте выполнить vagrant halt
, иначе машина останется запущенной и будет потреблять ресурсы. Если вы решили, что пора полностью все удалить и поставить заново, воспользуйтесь командой vagrant destroy
.
Конфигурация системы
Установка необходимых программ внутрь вагранта традиционным способом — не самый лучший способ добиться повторяемости. По сути такой подход ничем не отличается от настройки проекта на основной системе. Для решения задачи настройки используются средства configuration management, подобные Ansible. Вагрант хорошо интегрируется с ними. Подробнее об этом можно прочитать в официальной документации, а в одном из репозиториев хекслета есть пример такой интеграции.
Плагины
Vagrant может расширяться плагинами. Полный список можно найти на wiki.
Самый важный из этих плагинов - vagrant-vbguest.
Не вдаваясь в подробности, он делает так, что ваша система всегда остается рабочей при обновлении виртуальной машины. Без него возможна ситуация, когда обновив виртуальную машину вы увидите, что папка с кодом перестала синхронизироваться, и внутри вагранта её нет.
Решение проблем
- Убедитесь что в BIOS включены все необходимые параметры для нормального функционирования виртуализации.
- В Windows используйте имена пользователей, не содержащие кириллицы.
- Не запускайте вагрант из под суперпользователя или администратора.
- Если вы испытываете проблемы со скоростью работы, то, возможно, причина в способе синхронизирования папки с проектом. Vagrant позволяет настраивать способ синхронизации.