Использование vagrant
Использование vagrant.
Содержание
1 Общая информация
- Сайт: https://www.vagrantup.com/
- Репозиторий: https://github.com/hashicorp/vagrant
- Бинарные сборки: https://releases.hashicorp.com/vagrant (на данный момент не доступно из России).
- Зеркало бинарных сборок:
- Зеркало сборок из репозитория:
- Репозиторий образов для Vagrant: https://app.vagrantup.com/
1.1 Лицензия
1.2 Ответвления
- Смена лицензии привела к возникновению форка под лицензией MPL.
- Репозиторий: https://github.com/viagrunts/viagrunts
1.3 Основные понятия Vagrant
- провайдер (provider) — система виртуализации, с которой работает Vagrant (например, VirtualBox, VMWare и т.п.);
- box-файл (или Vagrant Box) — сохранённый образ виртуальной машины с развёрнутой в ней операционной системой; по сути, box-файл используется как основа для клонирования виртуальных машин с теми или иными настройками;
- Vagrantfile — конфигурационный файл, написанный на языке Ruby, в котором указаны настройки запуска виртуальной машины.
1.4 Основные команды Vagrant
- С Vagrant можно работать, используя следующие основные команды:
vagrant help
— вызов справки по командам Vagrant;vagrant box list
— список подключённых к Vagrant box-файлов;vagrant box add
— подключение box-файла к Vagrant;vagrant destroy
— отключение box-файла от Vagrant и удаление его из виртуального окружения;vagrant init
— создание конфигурационного файлаVagrantfile
для его последующего изменения;vagrant up
— запуск виртуальной машины с использованием инструкций по запуску из конфигурационного файлаVagrantfile
;vagrant reload
— перезагрузка виртуальной машины;vagrant halt
— остановка и выключение виртуальной машины;vagrant provision
— настройка внутреннего окружения имеющейся виртуальной машины (например, добавление новых инструкций (скриптов) в ранее созданную виртуальную машину);vagrant ssh
— подключение к виртуальной машине через ssh.
1.5 Пример конфигурации Vagrantfile
- Пример содержимого файла
Vagrantfile
для понимания принципов его синтаксиса.
1# -*- mode: ruby -*-
2# vi: set ft=ruby :
3Vagrant.configure(2) do |config|
4 config.vm.box = "BOX_NAME"
5 config.vm.hostname = "HOST_NAME"
6 config.vm.network "private_network", ip: "192.168.1.1"
7 config.vm.define "VM_NAME"
8 config.vm.provider "virtualbox" do |vb|
9 vb.gui = false
10 vb.memory = "1024"
11 end
12end
- Первые две строки указывают на режим работы с
Vagrantfile
и использование языка Ruby. - Затем идёт цикл
do
, заменяющий конструкциюVagrant.configure
далее по тексту наconfig
. - Строка
config.vm.box = "BOX_NAME"
задаёт название образа (box-файла) виртуальной машины (обычно выбирается из официального репозитория). - Строка
config.vm.hostname = "HOST_NAME"
задаёт имя виртуальной машины. - Конструкция
config.vm.network
задаёт тип сетевого соединения и может иметь следующие назначения:config.vm.network "private_network", ip: "xxx.xxx.xxx.xxx"
— адрес из внутренней сети;config.vm.network "public_network", ip: "xxx.xxx.xxx.xxx"
— публичный адрес, по которому виртуальная машина будет доступна;config.vm.network "private_network", type: "dhcp"
— адрес, назначаемый по протоколу DHCP.
- Строка
config.vm.define "VM_NAME"
задаёт название виртуальной машины, по которому можно обращаться к ней из Vagrant и VirtualBox. - В конце идёт конструкция, определяющая параметры провайдера, а именно запуск виртуальной машины без графического интерфейса и с выделением 1 ГБ памяти.
2 Установка
2.1 Linux
- Gentoo:
1emerge app-emulation/vagrant
2.2 Windows
- Установка с помощью Chocolatey (см. Пакетный менеджер для Windows. Chocolatey):
1choco install vagrant
3 Принципы работы
4 Подготовка образа
4.1 Общая информация
- Подготовка образа проводится с помощью Packer (см. Packer).
- Сайт: https://www.packer.io/
4.2 Описание установки
- Ранее использовался язык описания JSON.
- После Packer-1.5 используется формат HCL2.
5 Установка дополнений
- Список дополнений: https://github.com/hashicorp/vagrant/wiki/Available-Vagrant-Plugins
- Установка дополнения:
1vagrant plugin install <plugin-name>
- Дополнение скачивается с сайта .
- Поскольку доступ из России блокируется, следует явно указать зеркало для загрузки дополнений:
1vagrant plugin install --plugin-clean-sources --plugin-source https://rubygems.org <plugin-name>