Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
- Astra Linux Special Edition РУСБ.10015-17
- Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
- Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6)
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
- Astra Linux Special Edition РУСБ.10015-16 исп. 1
- Astra Linux Common Edition 2.12
Для работы в Astra Linux Special Edition требуется подключение расширенного репозитория
Vagrant — программное обеспечение для создания и конфигурирования виртуальной среды разработки. Является системой управления для программного обеспечения виртуализации, например VirtualBox, и инструментом для средств управления конфигурациями, такими как Chef, Salt и Puppet. Работает с системами виртуализации KVM/QEMU, VirtualBox, VMware Workstation, поддерживает облачные среды, реализована встроенная поддержка для использования контейнерной виртуализации на базе LXC.
Установка пакетов
Пакет vagrant доступен:
- в расширенном репозитории Astra Linux Special Edition x,7 (см. Репозитории Astra Linux Special Edition x.7: структура, особенности подключения и использования);
- в репозитории Astra Linux Common Edition;
- в Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) пакет vagrant может быть установлен из репозитория Astra Linux Common Edition (см. Подключение репозиториев с пакетами в ОС Astra Linux и установка пакетов);
Из репозитория пакетов пакет может быть установлен с помощью графического менеджера пакетов (см. Графический менеджер пакетов synaptic), или из командной строки командой
Настройка пакета vagrant
Пакет vagrant по умолчанию выполняет все настройки виртуальной среды разработки из-под учетной записи пользователя vagrant с паролем vagrant. Такой пароль является ненадежным, и ОС семейства Astra Linux не позволят его использовать.
Изменить настройки имени и пароля можно с помощью так называемого VagrantFile, однако, на данном этапе используем вход по открытому ключу.
Стандартный НЕБЕЗОПАСНЫЙ открытый ключ vagrant можно скачать по ссылке (небезопасный ключ будет автоматически заменён случайно сгенерированным ключом при первом подключении через SSH)
Работа с пакетом vagrant
Общий сценарий работы
- Создать базовую виртуальную машину (далее ВМ) в используемой среде виртуализации (или скачать готовый образ из репозитория Vagrant);
- Перенести созданную ВМ в БД Vagrant;
- Клонировать и запустить готовый образ ВМ, изменяя, по мере надобности, настройки и сценарии запуска;
Vagrant и VirtualBox
При использовании системы виртуализации VirtualBox для работы с Vagrant следует установить расширение VirtualBox Extension Pack
. На гостевые (виртуальные) машины, с которыми будет работать Vagrant, должно быть установлено Дополнение Гостевой ОС.
Корректировка пакета Vagrant v1.9.1 для работы с VirtualBox
Для того, чтобы пакет Vagrant версии 1.9.1 и пакет VirtualBox версии 5.2, входящие на момент написания статьи в состав дистрибутива Astra Linux Common Edition, работали совместно, нужно внести исправление в файл настроек Vagrant
/usr/share/rubygems-integration/all/gems/vagrant-1.9.1/plugins/providers/virtualbox/driver/meta.rb
а именно, после строки номер 63
добавить строку
"5.2" => Version_5_1,
Создание базовой виртуальной платформы в VirtualBox
Создать в VirtualBox виртуальную платформу в соответствии с инструкцией:
- С удобным вам именем платформы (для примера возьмем имя vagrant-astralinux);
Установить на виртуальную платформу нужную версию ОС с нужными настройками.
- С именем пользователя vagrant;
- С любым паролем, допустимым требованиями безопасности используемой ОС
- При установке ОС можно сразу установить сервер SSH, выбрав пункт "Средства удалённого доступа SSH" в диалоге "Выбор программного обеспечения" установщика ОС
После завершения установки ВМ войти в виртуальную ОС, и выполнить следующие действия:
- Установить пакет гостевых дополнений в соответствии с инструкцией;
- Передать серверу SSH на ВМ открытый ключ Vagrant
(адрес ВМ можно определить, выполнив на ней команду ifconfig) - дополнительно, можно выполнить нужные вам первичные настройки ОС
(пункт необязательный, настройки ОС может выполнять Vagrant, если ему предоставить соответствующий сценарий, см. ниже)
Экспорт ВМ из VirtualBox
Локальный vagrant-контейнер из созданной ранее в VirtualBox виртуальной машины создается командой:
Команда выполняется довольно долго, но, в итоге, vagrant выполнит экспорт созданной в VirtualBox ВМ с именем vagrant-astralinux,
в файл (контейнер, box) vagrant-astralinux-one.box, расположенный в рабочем каталоге.
Далее этот файл может быть перемещен на другую машину, или импортирован в локальную базу данных Vagrant командой vagrant box add (имя образа машины в БД Vagrant будет astralinux-one):
Импорт ВМ в Vagrant
Импорт контейнера в локальную базу данных Vagrant выполняется командой vagrant box add (имя образа машины в БД Vagrant будет astralinux-one):
При этом в каталоге будет создан конфигурационный файл Vagrantfile, содержащий базовые настройки для запуска виртуальной машины.
Запуск ВМ в Vagrant
Для запуска виртуальной платформы создать отдельный рабочий каталог, и перейти в него:
cd test
После этого выполнить инициализацию платформы:
В результате выполнения этой команды в текущем каталоге будет создан локальный файл с именем Vagrantfile, содержащий индивидуальные настройки для запуска виртуальной машины. Локальный Vagrantfile будет выполняться при запуске ВМ после базового Vagrantfile, созданного при импорте VM, и переопределять базовые настройки.
Файлы Vagrantfile представляют собой сценарий на языке программирования Ruby. В этих сценариях файле можно указать индивидуальные параметры запуска, которые будут применяться к ранее созданному образу, хранящемуся в базе данных. Можно изменить ограничения по памяти и процессорам, включить или отключить разделение каталогов, изменить настройки сети, в том числе — настроить проброс портов из гостевой системы в хост-систему, вызов сценариев bash, и так далее. В том числе, можно указать команды, которые будут применяться только при первичном запуске ВМ, или при каждом запуске.
Запуск виртуальной машины:
Подключение к виртуальной машине:
Для первичного входа будет использован ранее созданный небезопасный открытый ключ, который сразу же будет заменён на случайно сгенерированный ключ.
При этом, текущий рабочий каталог, из которого запускалась ВМ, будет автоматически доступен из ВМ через каталог /vagrant.
Пример использования сценария
Подробное описание возможностей сценариев Vagrant имеется в оригинальной документации пакета.
Пример сценария Vagrantfile, запускающего сразу несколько ВМ из ранее созданного контейнера astralinux-test:
- ВМ с именем v_ipa и с доменным именем ipa.astra.test, предназначенная на роль сервера
- Три ВМ с именами node_1, node_2 и node_3, предназначенные на роль клиентов
Vagrant.configure("2") do |config|
config.vm.box = "astralinux-test"
config.vm.guest = "debian"
config.ssh.shell = "bash"
config.vm.define "ipa" do |ipa|
ipa.vm.provider "virtualbox" do |vb|
vb.name = "v_ipa"
end
ipa.vm.hostname = "ipa.domain.test"
end
(1..3).each do |i|
config.vm.define "node-#{i}" do |node|
node.vm.provider "virtualbox" do |vb|
vb.name = "node-#{i}"
end
node.vm.hostname = "node-#{i}"
node.vm.provision "shell",
inline: "echo hello from node #{i}"
end
end
end
Выполнение сценария осуществляется одной командой: