Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
Введение
В статье рассматривается пример создание контейнера Vagrant на базе образа подготовленного в системе виртуализации QEMU/KVM в Astra Linux. Предполагается, что имеется машина с установленной и настроенной системой виртуализации, на которой образ создается, настраивается и конвертируется в файл для передачи в Vagrant.
Подготовка образа виртуальной машины
libvirtДля создания исходного образа следует использовать обычные процедуры работы с системой виртуализации QEMU/KVM.
Для подготовки созданного образа в работе с Vagrant выполнить следующие действия в операционной системе образа необходимо выполнить следующие действия:
- Создать пользователя с именем vagrant, имеющего права администратора (для Astra Linux Special Edition с включенным МРД - администратора с высоким уровнем целостности). Это можно сделать при установке ОС на виртуальную машину (при этом пользователю должен быть установлен пароль vagrant), или выполнив на ранее созданной машине команды:
Создать пользователя vagrant и его домашний каталог:
Command sudo useradd -m vagrant Установить пользователю vagrant пароль vagrant:
Command sudo passwd vagrant -s /bin/bash -G astra-admin vagrant опции команды:
-m - создать домашний каталог;
-s /bin/bash - задать командную оболочку;
-G astra-admin - включить пользователя Включить пользователя vagrant в группу astra-admin для того, чтобы этот пользователь мог использовать команду , что позволит ему выполнять команды с sudo без пароля;Установить пользователю vagrant любой пароль:
Command sudo usermod -aG astra-admin vagrantpasswd vagrant Пароль может быть любым, так как далее настраивается подключение SSH по ключу без использования пароля.
Для работы в виртуальных машинах Astra Linux Special Edition с включенным МРД МКЦ назначить пользователю vagrant высокую целостность:
Command sudo pdpl-user -i 63 vagrant
- Включить Установить, включить и настроить службу ssh (служба может быть установлена и настроена при установке ОС):
Установить пакет openssh-server:
Command sudo apt install openssh-server Разрешить автоматический запуск службы:
Command sudo systemctl enable ssh Загрузить и зарегистрировать стандартный ключ ssh vagrant для доступа без пароля:
Command wget https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant.pub
ssh-copy-id -f -i vagrant.pub vagrant@localhost
Если предполагается использовать автоматическое монтирование каталогов средствами vagrant, то установить клиент NFS:
Command sudo apt install nfs-common - Если необходимо, установить другие дополнительные пакеты.;
- Выключить виртуальную машину.
Создание образа для контейнера Vagrаnt
Конвертировать образы qcow2 в контейнеры vagrant можно на любой машине, при этом ни система виртуализации, ни vagrant не нужны. Для подготовки машины к созданию контейнеров:
Установить пакет qemu-utils:
Command sudo apt install qemu-utils Подготовить сценарий конвертации образов виртуальных машин qcow2 в контейнеры vagrant. Оригинал сценария доступен по ссылке: https://raw.githubusercontent.com/vagrant-libvirt/vagrant-libvirt/master/tools/create_box.sh, оригинальное описание применения сценария доступно по ссылке: https://github.com/vagrant-libvirt/vagrant-libvirt. Вариант сценария, использовавшийся при написании данной статьи, можно скачать по ссылке:
create-box.sh. Сценарий сохранить в файле именем create-box.sh и сделать исполняемым:
Command chmod +x create-box.sh Установить имя файла, содержащего образ виртуальной машины. Это можно сделать командой:
Command vagrant dumpxml <имя_виртуальной_машины> | grep qcow2 и, при необходимости, скопировать файл с образом на машину, на которой будет выполняться конвертация.
Выполнить конвертацию с помощью сценария. В простейшем виде достаточно указать имя файла с образомПример команды:
Также можно использовать дополнительные параметры:Command ./create-box.sh <имя_файла_с_образом>
или добавить в конфигурацию контейнера vagrant дополнительные параметры, например:Command ./create-box.sh <имя_файла_с_образом> <имя_контейнера_vagrant> <имя_файла_с_дополнительными_параметрами> При этом в файле с дополнительными параметрами (имя файла может быть произвольным):
Обязательно должен быть указан тип виртуальной машины:
Блок кода config.vm.guest = "astra"
Опционально может быть указан
config.nfs.verify_installed = false
-запрет проверки наличия клиента монтирования NFS (если монтирование не используется):
Блок кода config.nfs.verify_installed = false;
- запрет включенного по умолчанию монтирования текущего каталога в каталог /vagrant виртуальной машины;Блок кода config.vm.synced_folder ".", "/vagrant", disabled: true
Подготовка хоста Vagrant
На машине, на которой будет запускаться образ vagrant, должны быть установлены vagrant, система виртуализации QEMU/KVM и плагин vagrant-libvirt (или пакет vagrant-libvirt). Установить все пакеты можно командами:
Предупреждение |
---|
На момент написания статьи: В репозиториях отсутствует пакет vagrant-libvirt и vagrant-astra |
Для установки пакетов:
Подключить расширенный репозиторий (см. Репозитории Astra Linux Special Edition x.7: структура, особенности подключения и использования) версии не ниже 1.7.2 и установить пакеты из репозитория:
Для успешной работы с системой виртуализации включить пользователя в соответствующие группы пользователей, от имени которых должны запускаться виртуальные машины, в группы kvm, libvirt, libvirt-qemu, libvirt-admin и перезапустить пользовательскую сессию (подробнее см. Виртуализация QEMU/KVM в Astra Linux, в Astra Linux Common Edition группа libvirt-admin не используется):
Command |
---|
sudo usermod -a -G kvm,libvirt,libvirt-admin,libvirt-qemu $USER<имя_пользователя> |
Запуск контейнера Vagrant на хосте Vagrant
Скопировать файл с контейнером vagrant на хост.
Предупреждение Полный путь к файлу не должен содержать символов кириллицы. Создать каталог для работы и перейти в него:
Command mkdir vagrant-astra
cd vagrant-astraИнициировать окружение vagrant, указав имя файла с образом vagrant:
Command vagrant init <имя_файла_с_образом_vagrant> Запустить контейнер vagrant, указав провайдера libvirt:
Command vagrant up --provider libvirt Для проверки работоспособности контейнера выполнить контрольное подключение через ssh (в примере ниже при подключении выполняется команда id):
Command vagrant ssh -- "id"