VAGRANT

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:

Что­бы убе­дить­ся, что уста­нов­ка про­шла успеш­но, вве­ди­те сле­ду­ю­щую коман­ду, кото­рая выве­дет вер­сию Vagrant:

Вывод дол­жен выгля­деть при­мер­но так:

НАЧАЛО РАБОТЫ С VAGRANT

Теперь, когда Vagrant уста­нов­лен в вашей систе­ме CentOS, мы пока­жем вам, как создать сре­ду разработки.

Мы будем исполь­зо­вать про­вай­де­ра VirtualBox, кото­рый явля­ет­ся постав­щи­ком по умол­ча­нию для Vagrant.

Пер­вым шагом явля­ет­ся созда­ние ката­ло­га, кото­рый будет кор­не­вым ката­ло­гом про­ек­та, и файл Vagrantfile. Vagrantfile - это файл Ruby, кото­рый опи­сы­ва­ет, как настро­ить и под­го­то­вить вир­ту­аль­ную машину.

Создай­те ката­лог про­ек­та и пере­клю­чи­тесь на него:

mkdir ~/my-vagrant-projectcd ~/my-vagrant-project

Сле­ду­ю­щим шагом явля­ет­ся ини­ци­а­ли­за­ция ново­го Vagrantfile с помо­щью vagrant init коман­ды и ука­за­ние поля, кото­рое вы хоти­те использовать.

Короб­ки пред­став­ля­ют собой фор­мат паке­та для сред Vagrant и зави­сят от постав­щи­ка. Вы може­те най­ти спи­сок обще­до­ступ­ных ящи­ков Vagrant на стра­ни­це ката­ло­га при­ло­же­ний Vagrant .

В этом при­ме­ре мы будем исполь­зо­вать ubuntu/bionic64 поле. Запу­сти­те сле­ду­ю­щую коман­ду, что­бы ини­ци­а­ли­зи­ро­вать новый Vagrantfile:

Вы може­те открыть Vagrantfile , про­чи­тать ком­мен­та­рии и выпол­нить настрой­ку в соот­вет­ствии с ваши­ми потребностями.

Запу­сти­те vagrant upкоман­ду для созда­ния и настрой­ки вир­ту­аль­ной маши­ны в соот­вет­ствии с Vagrantfile.

Как вид­но из при­ве­ден­но­го выше выво­да, Vagrant так­же мон­ти­ру­ет ката­лог про­ек­та на /vagrant вир­ту­аль­ной машине, что поз­во­ля­ет вам рабо­тать с фай­ла­ми ваше­го про­ек­та на вашем хост-компьютере.

Для SSH в вир­ту­аль­ной машине про­сто запустите:

Вы може­те оста­но­вить вир­ту­аль­ную маши­ну с помо­щью сле­ду­ю­щей команды:

Сле­ду­ю­щая коман­да оста­нав­ли­ва­ет маши­ну, если она рабо­та­ет, и уни­что­жа­ет все ресур­сы, кото­рые были созда­ны во вре­мя созда­ния машины:

 

Подключение

Для вхо­да внутрь исполь­зу­ет­ся коман­да vagrant ssh. После выпол­не­ния тер­ми­нал под­клю­ча­ет­ся к машине в домаш­нюю дирек­то­рию поль­зо­ва­те­ля по умол­ча­нию. Тра­ди­ци­он­но в вагран­те это поль­зо­ва­тель с име­нем vagrant. Теперь необ­хо­ди­мо выпол­нить пере­ход в пап­ку /vagrant. Имен­но в ней ока­жет­ся код проекта.

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

Изме­не­ния при­ме­ня­ют­ся после пере­за­груз­ки маши­ны. Для это­го доста­точ­но выпол­нить коман­ду vagrant reload.

Остановка

В кон­це рабо­ты не забудь­те выпол­нить vagrant halt, ина­че маши­на оста­нет­ся запу­щен­ной и будет потреб­лять ресур­сы. Если вы реши­ли, что пора пол­но­стью все уда­лить и поста­вить зано­во, вос­поль­зуй­тесь коман­дой vagrant destroy.

Конфигурация системы

Уста­нов­ка необ­хо­ди­мых про­грамм внутрь вагран­та тра­ди­ци­он­ным спо­со­бом — не самый луч­ший спо­соб добить­ся повто­ря­е­мо­сти. По сути такой под­ход ничем не отли­ча­ет­ся от настрой­ки про­ек­та на основ­ной систе­ме. Для реше­ния зада­чи настрой­ки исполь­зу­ют­ся сред­ства configuration management, подоб­ные Ansible. Вагрант хоро­шо инте­гри­ру­ет­ся с ними. Подроб­нее об этом мож­но про­чи­тать в офи­ци­аль­ной доку­мен­та­ции, а в одном из репо­зи­то­ри­ев хекс­ле­та есть при­мер такой интеграции.

Плагины

Vagrant может рас­ши­рять­ся пла­ги­на­ми. Пол­ный спи­сок мож­но най­ти на wiki.

Самый важ­ный из этих пла­ги­нов - vagrant-vbguest.

Не вда­ва­ясь в подроб­но­сти, он дела­ет так, что ваша систе­ма все­гда оста­ет­ся рабо­чей при обнов­ле­нии вир­ту­аль­ной маши­ны. Без него воз­мож­на ситу­а­ция, когда обно­вив вир­ту­аль­ную маши­ну вы уви­ди­те, что пап­ка с кодом пере­ста­ла син­хро­ни­зи­ро­вать­ся, и внут­ри вагран­та её нет.

Решение проблем

  • Убе­ди­тесь что в BIOS вклю­че­ны все необ­хо­ди­мые пара­мет­ры для нор­маль­но­го функ­ци­о­ни­ро­ва­ния виртуализации.
  • В Windows исполь­зуй­те име­на поль­зо­ва­те­лей, не содер­жа­щие кириллицы.
  • Не запус­кай­те вагрант из под супер­поль­зо­ва­те­ля или администратора.
  • Если вы испы­ты­ва­е­те про­бле­мы со ско­ро­стью рабо­ты, то, воз­мож­но, при­чи­на в спо­со­бе син­хро­ни­зи­ро­ва­ния пап­ки с про­ек­том. Vagrant поз­во­ля­ет настра­и­вать спо­соб синхронизации.