Использование Vagrant на сервере Ubuntu

Что такое Vagrant?

Vagrant – это открытые программные средства для конфигурирования и развертывания нескольких сред разработки. Данная программа разработана для Linux, Mac OS X и Windows, и хотя для виртуализации она по умолчанию использует VirtualBox, ее можно использовать и с другими провайдерами, такими как VMware или AWS.

Данное руководство является продолжением предыдущего, в котором говорится об установке Vagrant и настройке первой простой гостевой машины на Ubuntu. В связи с этим предполагается, что описанные в предыдущем руководстве действия уже выполнены и понятны.

Боксы для VirtualBox

Как говорится в предыдущем руководстве, VirtualBox является провайдером Vagrant по умолчанию. Это значит, что добавленный бокс (precise32) создан специально для VirtualBox и не будет работать с другими провайдерами. Бокс precise32 является образом гостевой машины Ubuntu Precise 12.04 32 bit. Тем не менее, существуют боксы с другими операционными системами, которые также можно добавить.

Vagrant github project предоставляет официальные ссылки на другие боксы, которые можно добавить на Vagrant, работающий на VirtualBox. Доступны 3 официальных бокса : precise64 (64-битовая версия Ubuntu Precise 12.04), lucid32 и lucid64 (для дистрибутива Lucid Ubuntu 12.04).

Кроме того, существует веб-сайт сообщества с огромным количеством других боксов, доступных для VirtualBox и различных других провайдеров. Тем не менее, данные боксы не были утверждены Vagrant project, следовательно, нужно осознавать риск их использования. При желании добавить какой-либо их этих боксов на Vagrant, следуйте инструкциям предыдущего руководства.

Автоматическое обеспечение

Теперь файл Vagrant можно сконфигурировать на использование бокса для быстрого запуска гостевой машины Ubuntu. Что же делать дальше?

Предположим, нужно установить Apache на гостевую машину Ubuntu, созданную в предыдущем руководстве. К ней можно подключиться по SSH и выполнить команды вручную. Тем не менее, это означает, что всякий раз, когда возникнет необходимость использовать данную гостевую машину после ее уничтожения, все эти операции нужно выполнить снова.

Одно из удобнейших свойств Vagrant – обеспечение автоматизации. Это означает, что указанный скрипт оболочки будет запускаться всякий раз при использовании команды vagrant up. Для примера можно указать, что гостевая машина должна всегда разворачиваться с уже установленным Apache. Чтобы это сделать, нужно внести все соответствующие команды в файл в root-папке проекта (следующий после Vagrantfile):

nano bootstrap.sh

Внесите следующий скрипт в данный файл:

#!/usr/bin/env bash
apt-get update
apt-get install -y apache2
rm -rf /var/www
ln -fs /vagrant /var/www

Данный скрипт устанавливает Apache и связывает папки /var/www и /vagrant (последняя папка синхронизируется с root-папкой проекта на главной машине). Таким образом, можно редактировать файлы сервера Apache с главной машины, не беспокоясь о синхронизации.

Затем нужно отредактировать Vagrantfile и указать, что при развёртывании гостевой машины следует использовать следующий скрипт:

nano Vagrantfile

Внесите следующую строку в данный файл под указанным боксом по умолчанию:

config.vm.provision :shell, :path => "bootstrap.sh"

Это говорит Vagrant использовать обеспечение оболочки и запустить скрипт, расположенный в этом файле (путь к которому соответствует пути к root-папке проекта на главной машине).

Сохраните изменения и запустите команду «vagrant up», чтобы развернуть новую гостевую машину, на которой уже установлен Apache. Если гостевая машина уже запущена, ее можно перезагрузить с помощью следующей команды:

vagrant reload

Это перезагрузит машину и запустит обеспечение. Теперь при каждом запуске vagrant up or vagrant reload будет запускаться гостевая машина с уже установленным Apache.

Создание сети

Цель установки Apache на гостевую машину очевидна: необходимо, чтобы сервер обслуживал обращение к страницам через браузер. Но пока что получить доступ к гостевой машине через браузер нельзя. Нужно активировать функции создания сети и переадресации портов.

Переадресация портов позволяет указать порт на главной машине для совместного использования с гостевой машиной. Это значит, что если браузер направлен на адрес главной машины, используя определенный порт, то он в итоге выйдет на гостевую машину. Чтобы сделать это, перейдите в root-папку на главной машине проекта и отредактируйте Vagrantfile:

nano Vagrantfile

Под внесенными ранее строками (при установке обеспечения) вставьте следующую строку:

config.vm.network :forwarded_port, host: 4567, guest: 80

Это действие устанавливает, что если порт 4567 запрашивается на главной машине, то следует перенаправить запрос на порт 80 гостевой машины (порт Apache по умолчанию). Сохраните изменения и запустите команду vagrant up, в случае если гостевая машина еще не запущена. Если же гостевая машина запущена, используйте команду vagrant reload.

При использовании скрипта bootstrap.sh установленный на гостевую машину сервер Apache найдет файлы в папке /vagrant гостевой машины, которая, в свою очередь, синхронизирована с папкой проекта на  главной машине. Перейдите в любую из этих папок и создайте тестовый файл index.html со случайным текстом.

Теперь, если браузер направлен на главную машину проекта и указан порт 4567, страница index.html  будет обслуживаться сервером Apache гостевой машины. Если Vagrant установлен локально, попробуйте следующий URL:

http://127.0.0.1:4567

Если же Vagrant используется на удаленном сервере, попробуйте следующее:

http://192.119.208.208:4567/

Убедитесь, что IP-адрес заменен соответствующим удаленной машине адресом.

Итоги

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

В следующем руководстве речь пойдет о добавлении в Vagrant нового провайдера, а именно об использовании облачных серверов как гостевых машин. Для этого понадобится установить плагин Vagrant.

Tags: , , , ,

Добавить комментарий