Введение
В статье рассматривается пример создание контейнера Vagrant на базе образа подготовленного в системе виртуализации QEMU/KVM в Astra Linux. Предполагается, что имеется машина с установленной и настроенной системой виртуализации, на которой образ создается, настраивается и конвертируется в файл для передачи в Vagrant.
Подготовка образа виртуальной машины
Для создания исходного образа следует использовать обычные процедуры работы с системой виртуализации QEMU/KVM.
Для системы хранения (диска) создаваемого исходного образа рекомендуется использовать драйвер virtio. Этот драйвер используется в vagrant по умолчанию. Если использовать другие драйверы (SATA или SCSI), то для запуска созданного образа потребуется вручную указать использованный драйвер.
Для подготовки созданного образа в работе с Vagrant выполнить следующие действия в операционной системе образа:
- Создать пользователя с именем vagrant, имеющего права администратора (для Astra Linux Special Edition с включенным МРД — администратора с высоким уровнем целостности). Это можно сделать при установке ОС на виртуальную машину (при этом пользователю должен быть установлен пароль), или выполнив на ранее созданной машине команды:
- пакет vagrant;
- система виртуализации QEMU/KVM;
- vagrant-плагин vagrant-libvirt (или пакет vagrant-libvirt);
- пакет vagrant-plugin-astra.
- Создать пользователя vagrant:
опции команды:
-m — создать домашний каталог;
-s /bin/bash — задать командную оболочку;
-G astra-admin — включить пользователя в группу astra-admin, что позволит ему выполнять команды с sudo без пароля;
Пароль может быть любым, так как далее настраивается подключение SSH по ключу без использования пароля.
wget https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant.pub
ssh-copy-id -f -i vagrant.pub vagrant@localhost
Создание образа для контейнера Vagrаnt
Конвертировать образы qcow2 в контейнеры vagrant можно на любой машине, при этом ни система виртуализации, ни vagrant не нужны. Для подготовки машины к созданию контейнеров:
- Установить пакет qemu-utils:
При работе на машине с установленной системой виртуализации QEMU/KVM для того, чтобы найти файл с образом виртуальной машины можно использовать команду:
config.nfs.verify_installed = false;
config.vm.synced_folder ".", "/vagrant", disabled: true
Подготовка хоста Vagrant
На машине, на которой будет запускаться контейнер vagrant, должны быть установлены:
Подключить расширенный репозиторий (см. Репозитории Astra Linux Special Edition x.7: структура, особенности подключения и использования) версии не ниже 1.7.2 и установить пакеты из репозитория:
Для успешной работы с системой виртуализации включить пользователей, от имени которых должны запускаться виртуальные машины, в группы kvm, libvirt, libvirt-qemu, libvirt-admin и перезапустить пользовательскую сессию (подробнее см. Виртуализация QEMU/KVM в Astra Linux):
Запуск контейнера Vagrant на хосте Vagrant
Виртуализация средствами AstraLinux 1.6 SE
В руководстве администратора к AstraLinux 1.6 SE присутствует лишь описание пакетов и параметров.
Согласно данной статье на АстраВики https://wiki.astralinux.ru/pages/viewpage.action?pageId=27363213 — сделать не получается:
1) Пока не выполнил пункт 2 по включению пользователя в группы (даже для пользователя root !) при регистрации ВМ выпадает ошибка.
2) Упомянутый в статье пакет gvncviewer отсутствует в AstraLinux 1.6 SE.
3) После успешной регистрации ВМ — при запуска выдает ошибку «unable to set PDP label ‘0:63:0 on ‘/kvm/123.qcow2’: Отказано в доступе‘»
в /var/log/libvirt/qemu/123.log содержится следующее
«warning : virExec:744 : Setting child security label to 0:63:0
warning : virExec:752 : CAPS on start: PARSEC capabilities eip(80c,80c,80c) euid 0
libvirt: error : libvirtd quit during handshake: Ошибка ввода/вывода «
Подскажите пожалуйста, имеется ли возможность создавать и управлять виртуальными машинами (не покупая средства виртуализации Брест) имея только AstraLinux1.6 SE?
И если да — то как?
oko
New member
1) Пока не выполнил пункт 2 по включению пользователя в группы (даже для пользователя root !) при регистрации ВМ выпадает ошибка.
Что логично. Для этого данный пункт и был добавлен сразу после установки необходимых пакетов.
Вообще, если нужен условный гипервизор без поддержки режима «Мандатного контроля целостности», то делается все довольно просто:
1. Ставим Astra Linux в обычном варианте без выбора каких-либо доп.флагов (затирание, киоск, ALD и проч.) и без графики. Затирание не рекомендуется по причине его бессмысленности — вся защищаемая информация будет крутиться в qcow2-образе. Киоск и ALD по понятным причинам. Но рекомендуется отключить вывод загрузчика и использовать ядро hardened по умолчанию.
2. Заводим пользователя-администратора. Все действия будет совершать от его лица. При входе в консоли всегда выбираем Integrity level: 0
3. Отключаем нафиг мандатный контроль целостности:
sudo astra-mic-control disable
4. Отключаем NetworkManager:
sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager
5. Правим конфиг-файл сетевых интерфейсов с целью создания сетевого моста для виртуальных машин и нашей сети:
(в примере только 1 сетевая карта — eth0) и создаем сетевой мост (к примеру, с ip-адресом 192.168.12.110 из подсети 192.168.12.0/24, где шлюз по умолчанию и DNS — роутер выхода вовне — 192.168.12.1)
sudo nano /etc/network/interfaces
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
address 192.168.12.110
netmask 255.255.255.0
gateway 192.168.12.1
dns-nameservers 192.168.12.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
6. Ставим пакеты поддержки KVM:
sudo apt install libvirt-daemon-system libvirt0 qemu-kvm bridge-utils virt*
7. Добавляем нашего пользователя-администратора в группы поддержки kvm:
sudo adduser libvirt-admin
sudo adduser kvm
sudo adduser libvirt-qemu
8. Механизм мандатных меток (даже отключенный) запрещает создание вирт.машин в любом каталоге кроме /var/lib/libvirt/images (или я пока не
нашел, как его обойти), поэтому размечаем пространство в формате QCOW2 (можно и в RAW, но он более «сырой», ага) для файл-образа вирт.машины
нужного объема (в пример, 20 Гигабайт):
sudo qemu-img create -f qcow2 /var/lib/libvirt/images/ИМЯ-МАШИНЫ.img 20G
9. Создаем виртуальную машину (в примере ниже Windows, для Linux будут иные параметр os-type и кое-что еще):
sudo virt-install —connect qemu:///system -n win8 -r 2048 —cdrom «/mnt/Win81_64.iso» —arch=x86_64 —vcpus 2 —os-type windows —network=bridge:br0,model=e1000 —hvm —accelerate —graphics vnc,password=password,listen=0.0.0.0,port=5903 —disk «/var/lib/libvirt/images/ИМЯ-МАШИНЫ.img»,size=20,bus=sata,format=qcow2,cache=none
Если команда как бы подвисла, завершаем ее сочетанием Ctrl+C.
Проверяем командой sudo netstat -tpl, что *:5903 порт прослушивается — виртуальная машина создана и готова к работе.
10. Подключаемся к виртуальной машине через любой VNC-viewer на ip-адрес нашего сетевого моста, порт 5903. Вводим пароль (в примере
конфигурации, password). Инсталлируем гостевую ОС из выбранного ранее источника (в примере, /mnt/Win81_64.iso). Дожидаемся окончания установки
11. Средствами самой виртуальной машины смотрим MAC-адрес. При необходимости, выставляем статический IP либо на самой виртуальной машине, либо на DHCP-сервере, обслуживающем сеть нашего гипервизора.
12. Проверяем устойчивость работы виртуальной машины и радуемся жизни! Конфигурационный файл виртуальной машины лежит по адресу:
/etc/libvirt/qemu/ИМЯ_МАШИНЫ.xml (редактируется тем же sudo nano).
13. Добавляем виртуальную машину в автозапуск:
sudo ln -s /etc/libvirt/qemu/ИМЯ-МАШИНЫ.xml /etc/libvirt/qemu/autostart/ИМЯ-МАШИНЫ.xml
14. Завершить работу вирт.машины (в Астре по умолчанию не работает, ошибка PolKit, поэтому либо машину тушим изнутри, либо убиваем процесс командой sudo kill -9 номер_процесса. Поиск номера процесса — в качестве домашнего задания). Аналогично с system reboot — перезагрузка
вирт.машины:
virsh -c qemu:///system shutdown ИМЯ_МАШИНЫ
15. Редактировать конфигурацию, чтобы не лазить в файл постоянно
virsh -c qemu://system edit ИМЯ_МАШИНЫ
По вкусу настраиваем /etc/libvirt/libvirtd.conf — основные настройки гипервизора в части подключения администраторов, аудита и проч.
Доп.настройку хостовой ОС гипервизора проводим согласно Red Book или же без нее (в зависимости от требуемого уровня защищенности).
Установка сервера KVM
После создаем каталог в разделе диска, в котором будем хранить файлы виртуалки. Выполняем:
Копируем установочный образ для развертывания сервера в папку /iso
sudo mv установочный_образ_сервера.iso /iso
Меняем владельца установочного образа
sudo chown libvirt-qemu:libvirt /iso/установочный_образ_сервера.iso
Создание виртуальной машины в графике:
Теперь перейдем к созданию виртуальной машины с помощью утилиты virt-manager.
virt-manager
Появится вот такое окошко:
Выбираем Файл-> создать виртуальную машину
Выбираем метод установки — Локальный ISO или CDROM, Вперед.
Жмем Обзор, и выбираем iso/установочный_образ_сервера.iso
В левой части мы видим пространства данных. По умолчанию пространство данных содается в /var/lib/libvirt/images
Чтобы создать пространство данных на другом диске или в другой папке, нажимаем занчек «+» в левом нижнем углу.
Вводим имя создаваемого хранилища с образами. Вперёд.
Обзор и указываем путь до хранилища (папки). Открыть.
В меню выбор тома хранилища появился наш новый том и установочные образы (которые ранее скопировали сюда).
Выбираем установочный образ. Жмем Выбор тома.
Настраиваем выделяемое количество ОЗУ и процессоров.
Настраиваем размер и расположение пространства данных для нашей виртуальной машины (по умолчанию создается в папке /var/lib/libvirt/. )
Если нужно пространство разместить на другой папке или диске-жмем «Настроить»
Выбираем созданное на предыдущем этапе пространство данных, Около «Список томов» жмем «+»
Называем том хранилища, ставим его размер. Нажимаем галочку проверить конфигурацию. Готово.
При проверке конфигурации нажимаем добавить оборудование (это делается для обеспечения работоспособности мыши в виртуальной машине)
Наводим указатель на ВВОД и выбираем Графический планшет USB EvTouch. Нажимаем готово.
Нажимаем в верхне левом углу начать установку
В появившейся вкладке предлагается включить дефолтную сеть. Настройка сети мостом в статье.
Наживаем ДА и начинается установка.
Если при запуске виртуальной сети пишет что «Не удалось запустить виртуальную сеть «default»: internal error: Failed to initialize a valid firewall backend» установите следующие пакеты:
sudo apt install firewalld
sudo systemctl enable firewalld
sudo systemctl start firewalld
sudo service libvirtd restart
Далее идет интуитивно понятная установка операционной системы.
Для создания общего буфера обмена установим на виртуальной машине следующие пакеты и перезагрузим:
sudo apt install spice-vdagent && sudo reboot
Что бы осуществлять изменение сетевых настроек без перезагрузки виртуальной машины установим пакет на виртуальную машину:
sudo apt install qemu-guest-agent