Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
Введение
В статье рассматривается пример создание контейнера Vagrant на базе образа подготовленного в системе виртуализации QEMU/KVM в Astra Linux. Предполагается, что имеется машина с установленной и настроенной системой виртуализации, на которой образ создается, настраивается и конвертируется в файл для передачи в Vagrant.
Подготовка образа виртуальной машины libvirt
Для создания исходного образа следует использовать обычные процедуры работы с системой виртуализации.
Для подготовки образа в операционной системе образа необходимо выполнить следующие действия:
- Создать пользователя с именем vagrant, имеющего права администратора (для Astra Linux Special Edition с включенным МРД - администратора с высоким уровнем целостности). Это можно сделать при установке ОС на виртуальную машину (при этом пользователю должен быть установлен пароль vagrant), или выполнив на ранее созданной машине команды:
Создать пользователя vagrant и его домашний каталог:
sudo useradd -m vagrantУстановить пользователю vagrant пароль vagrant:
sudo passwd vagrantВключить пользователя vagrant в группу astra-admin для того, чтобы этот пользователь мог использовать команду sudo без пароля:
sudo usermod -aG astra-admin vagrantДля работы в виртуальных машинах Astra Linux Special Edition с включенным МРД назначить пользователю vagrant высокую целостность:
sudo pdpl-user -i 63 vagrant
- Включить и настроить службу ssh (служба может быть установлена и настроена при установке ОС):
Установить пакет openssh-server:
sudo apt install openssh-serverРазрешить автоматический запуск службы:
sudo systemctl enable sshЗагрузить и зарегистрировать стандартный ключ ssh vagrant для доступа без пароля:
wget https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant.pub
ssh-copy-id -f -i vagrant.pub vagrant@localhost
Если предполагается использовать автоматическое монтирование средствами vagrant, то установить клиент NFS:
sudo apt install nfs-common- Если необходимо, установить другие дополнительные пакеты.
- Выключить виртуальную машину.
Создание образа для контейнера Vagrаnt
Конвертировать образы qcow2 в контейнеры vagrant можно на любой машине, при этом ни система виртуализации, ни vagrant не нужны.
- Для подготовки машины к созданию контейнеров:
Установить пакет qemu-utils:
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 и сделать исполняемым:
chmod +x create-box.sh
Установить имя файла, содержащего образ виртуальной машины. Это можно сделать командой:
vagrant dumpxml <имя_виртуальной_машины> | grep qcow2и, при необходимости, скопировать файл с образом на машину, на которой будет выполняться конвертация.Выполнить конвертацию с помощью сценария. В простейшем виде достаточно указать имя файла с образом:
./create-box.sh <имя_файла_с_образом>
Также можно использовать дополнительные параметры:./create-box.sh <имя_файла_с_образом> <имя_контейнера_vagrant> <имя_файла_дополнительными_параметрами>
или добавить в конфигурацию контейнера vagrant дополнительные параметры, например:config.nfs.verify_installed = false
- запрет проверки наличия клиента монтирования NFS;
Подготовка хоста Vagrant
На машине, на которой будет запускаться образ vagrant, должны быть установлены vagrant, система виртуализации QEMU/KVM и плагин vagrant-libvirt (или пакет vagrant-libvirt). Установить все пакеты можно командами:
В репозиториях отсутствует пакет vagrant-libvirt и vagrant-astra
wget http://ftp.de.debian.org/debian/pool/main/r/ruby-fog-core/ruby-fog-core_2.1.0-3_all.deb
wget http://ftp.de.debian.org/debian/pool/main/r/ruby-fog-libvirt/ruby-fog-libvirt_0.6.0-1_all.deb
wget http://ftp.de.debian.org/debian/pool/main/r/ruby-fog-json/ruby-fog-json_1.2.0-1_all.deb
wget http://ftp.de.debian.org/debian/pool/main/r/ruby-fog-xml/ruby-fog-xml_0.1.1-5_all.deb
wget http://ftp.de.debian.org/debian/pool/main/r/ruby-libvirt/ruby-libvirt_0.7.1-1_amd64.deb
sudo apt install astra-kvm vagrant vagrant-libvirt vagrant-astra ./*.deb
Для успешной работы с системой виртуализации включить пользователя в соответствующие группы и перезапустить пользовательскую сессию (подробнее см. Виртуализация QEMU/KVM в Astra Linux, в Astra Linux Common Edition группа libvirt-admin не используется):
Запуск контейнера Vagrant на хосте Vagrant
Скопировать файл с контейнером vagrant на хост.
Полный путь к файлу не должен содержать символов кириллицы.Создать каталог для работы и перейти в него:
mkdir vagrant-astra
cd vagrant-astraИнициировать окружение vagrant, указав имя файла с образом vagrant:
vagrant init <имя_файла_с_образом_vagrant>Запустить контейнер vagrant, указав провайдера libvirt:
vagrant up --provider libvirt