Обзор Vagrant для пользователей MariaDB
Vagrant — это инструмент для создания и управления машин разработки (боксы Vagrant). Обычно это виртуальные машины на локальной системе (localhost), но они также могут быть контейнерами Docker или удалёнными машинами. Vagrant — это программное обеспечение с открытым исходным кодом, поддерживаемое компанией HashiCorp и распространяемое по лицензии MIT.
Преимущества использования Vagrant включают простоту и систему создания тестовых боксов, которая в основном независима от используемой технологии.
Для получения информации об установке Vagrant см. Установку в документации Vagrant.
В этой странице мы обсуждаем основные концепции Vagrant.
Концепции Vagrant
Машина Vagrant создаётся на основе бокса. Это может быть виртуальная машина, контейнер или удалённый сервер из облачной службы.
Бокс — это пакет, который можно использовать для создания машин Vagrant. Мы можем загрузить боксы с app.vagrantup.com или создать новый бокс из Vagrantfile. Бокс может быть использован как основа для другого бокса. Базовые боксы обычно являются боксами операционной системы, загружаемыми с app.vagrantup.com.
Провайдер отвечает за предоставление технологии виртуализации, которая будет работать с нашей машиной.
Провизионер отвечает за установку и настройку необходимого программного обеспечения на новой созданной машине Vagrant.
Пример
Эти концепции, вероятно, проще понять на примере.
Мы можем использовать бокс Ubuntu в качестве основы для создания машины Vagrant с MariaDB. Для этого мы пишем Vagrantfile. В Vagrantfile мы указываем VirtualBox в качестве провайдера. И мы используем провизионер Ansible для установки и настройки MariaDB. После завершения Vagrantfile мы можем запустить команду Vagrant для запуска машины Vagrant, которая фактически является виртуальной машиной VirtualBox, на которой работает MariaDB в Ubuntu.
Следующая диаграмма должна прояснить пример:
Vagrantfiles
Vagrantfile — это файл, описывающий, как создать одну или несколько машин Vagrant. Vagrantfiles используют язык Ruby, а также объекты, предоставляемые самим Vagrant.
Vagrantfile часто основывается на боксе, который обычно является операционной системой, в которой мы будем устанавливать наше программное обеспечение. Например, можно создать Vagrantfile для MariaDB на основе ubuntu/trusty64 бокса. Vagrantfile может описывать бокс с одним сервером, например MariaDB, но он также может содержать всю среду, например LAMP. Для большинства практических случаев наличие всей среды в одном боксе более удобно.
Боксы можно искать в Vagrant Cloud. Большинство их Vagrantfiles доступны на GitHub. Поиск можно проводить, среди прочего, по ключевому слову для поиска определённой технологии и по провайдеру.
Провайдеры
Провайдер добавляет поддержку создания определённого типа машин. Vagrant поставляется с несколькими провайдерами, например:
-
VirtualBoxпозволяет создавать виртуальные машины с VirtualBox. -
Microsoft-Hyper-Vпозволяет создавать виртуальные машины с Microsoft Hyper-V. - Docker позволяет создавать контейнеры Docker. На системах, отличных от Linux, Vagrant создаст VM для запуска Docker.
Альтернативные провайдеры поддерживаются третьими сторонами или продаются компанией HashiCorp. Они позволяют создавать различные типы машин, например, используя VMWare.
Примеры полезных провайдеров, признанных сообществом:
- Vagrant AWS Provider.
- Vagrant Google Compute Engine (GCE) Provider.
- Vagrant Azure Provider.
- OpenVZ.
- vagrant-lxc.
Если вам нужно создавать машины с различными технологиями или развертывать их на неподдерживаемых облачных платформах, вы можете разработать пользовательский провайдер на языке Ruby. Для получения информации см. Разработка плагинов: провайдеры в документации Vagrant. Провайдер Vagrant AWS изначально был написан как пример провайдера.
Провизионеры
Провизионер — это технология, используемая для развертывания программного обеспечения на вновь созданных машинах.
Самый простой провизионер — shell, который выполняет файл оболочки внутри машины Vagrant. powershell также доступен.
Другие провизионеры используют программное обеспечение для автоматизации провизионирования машины. Существуют провизионеры, которые позволяют использовать Ansible, Puppet, Chef или Salt. Применительно к этому, существуют различные провизионеры, позволяющие использовать эти технологии распределённым способом (например, используя Puppet apply) или централизованным способом (например, используя Puppet-сервер).
Интересно отметить, что существует как провайдер Docker, так и провизионер Docker. Это означает, что машина Vagrant может быть контейнером Docker, благодаря docker провизионеру. Или это может быть любая технология виртуализации с запущенным Docker, благодаря docker провизионеру. В этом случае Docker загружает образы и запускает контейнеры для выполнения программного обеспечения, которое должно работать в машине Vagrant.
Если вам необходимо использовать неподдерживаемый метод провизионирования, вы можете разработать пользовательский провизионер на языке Ruby. См. Разработка плагинов: провизионеры в документации Vagrant.
Плагины
Установить плагин можно с помощью этой команды:
vagrant plugin install <plugin_name>
В Vagrantfile можно потребовать установки плагина таким образом:
require 'plugin_name'
Плагин может быть плагином Vagrant или Ruby gem, устанавливаемым с rubygems.org. Можно установить плагин, который существует только локально, указав его путь.
Изменения в Vagrant 3.0
HashiCorp опубликовала статью, описывающую её планы для Vagrant 3.0.
Vagrant перейдёт на архитектуру клиент-сервер. Большая часть логики будет храниться на сервере, а машины разработки будут запускать тонкий клиент, взаимодействующий с сервером. Будет возможно хранить конфигурацию в центральной базе данных.
Ещё одно заметное изменение заключается в том, что Vagrant переходит с Ruby на Go. В течение некоторого времени по-прежнему будет возможно использовать Vagrantfiles и плагины, написанные на Ruby. Однако в будущем Vagrantfiles и плагины должны быть написаны на одном из языков, поддерживающих gRPC (не обязательно Go). Vagrantfiles также можно писать на HCL, языке конфигурации HashiCorp.
Команды Vagrant
Это список наиболее распространённых команд Vagrant. Для получения полного списка см. Интерфейс командной строки в документации Vagrant.
Для отображения доступных машин:
vagrant box list
Для запуска машины из бокса:
cd /box/directory vagrant up
Для подключения к машине:
vagrant ssh
Для просмотра статуса всех машин и их идентификаторов:
vagrant global-status
Для уничтожения машины:
vagrant destroy <id>
Ресурсы и ссылки по Vagrant
Вот несколько полезных веб-сайтов и страниц для пользователей Vagrant.
Контент, изначально предоставленный Vettabase Ltd.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/vagrant-overview-for-mariadb-users/