Автоматическая установка и настройка конфигурации хостов виртуализации
В данной инструкции описан пример автоматической установки хостов виртуализации с использованием технологии PXE и конфигурационного файла Kickstart для системы zVirt MAX.
Для реализации потребуется предварительно подготовить внешний хост с установленными службами TFTP, Apache Web Server, PXE и DHCP-сервером.
| В качестве сервера DHCP может быть использован уже существующий в сети сервер, реализованный на базе сетевой ОС или оборудования. |
1. Автоматическая установка ноды гипервизора zVirt Max средствами PXE
1.1. Развёртывание сервера удалённой загрузки для автоматической установки ноды гипервизора zVirt Max
В качестве ОС на хосте, на котором будет настраиваться указанный стек, использовалась РЕД ОС 7.3.
-
Установите необходимые пакеты с помощью команды:
dnf install dhcp-server tftp-server syslinux httpd dnf-plugins-core -
Создайте каталоги для служб TFTP и PXE помощью команд:
mkdir /var/lib/tftpboot/pxelinux.cfg mkdir /var/lib/tftpboot/uefi mkdir -p /var/lib/tftpboot/images/REDOS -
Cкопируйте файлы для запуска установки РЕД ОС в режиме legacy через PXE и настройте права на файлы с помощью команд:
cp /usr/share/syslinux/{chain.c32,mboot.c32,memdisk,menu.c32,pxelinux.0,ldlinux.c32,libutil.c32} /var/lib/tftpboot/ chmod 777 /var/lib/tftpboot/pxelinux.0 -
Загрузите файлы для UEFI режима установки РЕД ОС в каталог
/var/lib/tftpboot/uefiс помощью команд:dnf download shim-x64 grub2-efi-x64 --downloaddir=/root/ cd /root/ rpm2cpio shim-x64-*.rpm | cpio -dimv rpm2cpio grub2-efi-x64-*.rpm | cpio -dimv cp ./boot/efi/EFI/BOOT/BOOTX64.EFI /var/lib/tftpboot/uefi cp ./boot/efi/EFI/redos/grubx64.efi /var/lib/tftpboot/uefi chmod 777 /var/lib/tftpboot/uefi/*.* -
В случае использования загрузочного USB-носителя с РЕД ОС 7.3 скопируйте его содержимое в каталог
/var/lib/tftpboot/images/REDOS:cp -vR "/run/media/user/redos-MUROM-7.3.4 x86_64/." /var/lib/tftpboot/images/REDOS -
В случае использования iso-образа, смонтируйте образ к системе и скопируйте все содержимое в каталог
/var/lib/tftpboot/images/REDOS/:mount -t iso9660 -o loop redos-MUROM-7.3.4-20231220.0-Everything-x86_64-DVD1.iso /mnt/ cp -vR /mnt/* /var/lib/tftpboot/images/REDOS/ umount /mnt/ -
Сконфигурируйте DHCP-сервер. Внесите изменения в файл
/etc/dhcp/dhcpd.conf.Заполните указанные ниже параметры в соответствии с настройками вашей сетевой инфраструктуры:
-
subnet– адрес и маска подсети из, которой будут выданы IP-адреса. -
option routers- Шлюз по умолчанию. -
range- Диапазон IP из которого будут выданы IP-адреса. -
filename- исполняемый файл загрузчика pxelinux -
next-server- IP-адрес TFTP-сервера, с которого осуществляется загрузка операционной системы на клиентские машины.
Ниже представлено содержимое файла
/etc/dhcp/dhcpd.conf:non-authoritative; allow bootp; option space pxelinux; option pxelinux.magic code 208 = string; option pxelinux.configfile code 209 = text; option pxelinux.pathprefix code 210 = text; option pxelinux.reboottime code 211 = unsigned integer 32; option architecture-type code 93 = unsigned integer 16; subnet 192.168.2.0 netmask 255.255.255.0 { option routers 192.168.2.1; range 192.168.2.70 192.168.2.80; class "pxeclients" { match if substring (option vendor-class-identifier, 0, 9) = "PXEClient"; next-server 192.168.2.10; if option architecture-type = 00:07 { filename "uefi/grubx64.efi"; } else { filename "pxelinux.0"; } } } -
-
Запустите службу dhcpd:
systemctl enable dhcpd --now -
Создайте загрузочное меню для установки в режиме legacy с использованием PXE:
В параметре inst.repoукажите IP-адрес PXE-сервера.nano /var/lib/tftpboot/pxelinux.cfg/defaultОтредактируйте содержимое файла pxelinux.cfg следующим образом:
default menu.c32 PROMPT 0 TIMEOUT 150 MENU TITLE PXE Menu LABEL REDOS 7.3 MENU LABEL REDOS 7.3 KERNEL images/REDOS/images/pxeboot/vmlinuz APPEND initrd=images/REDOS/images/pxeboot/initrd.img ramdisk_size=128000 ip=dhcp inst.repo=http://192.168.2.10/images/REDOS/ inst.stage2=http://192.168.2.10/images/REDOS/
-
Создайте загрузочное меню для установки в режиме UEFI с использованием PXE:
В параметре inst.repoукажите IP-адрес PXE-сервера.nano /var/lib/tftpboot/uefi/grub.cfgОтредактируйте содержимое файла grub.cfg следующим образом:
function load_video { insmod efi_gop insmod efi_uga insmod video_bochs insmod video_cirrus insmod all_video } load_video set gfxpayload=keep insmod gziomenuentry 'REDOS 7.3' { linux images/REDOS/images/pxeboot/vmlinuz ip=dhcp inst.repo=http://192.168.2.10/images/REDOS/ inst.stage2=http://192.168.2.10/images/REDOS/ initrd images/REDOS/images/pxeboot/initrd.img } -
Настройте web-сервер httpd для публикации файлов дистрибутива РЕД ОС в локальной сети. Создайте файл pxeboot.conf.
nano /etc/httpd/conf.d/pxeboot.confОтредактируйте содержимое файла pxeboot.conf следующим образом:
В параметре Require ipукажите IP-адрес сети, в которой располагается PXE-сервер.Alias /images /var/lib/tftpboot/images <Directory /var/lib/tftpboot/images> Options Indexes FollowSymLinks Require ip 127.0.0.1 192.168.2.0/24 </Directory>
-
Назначьте web-контекст Selinux для созданных директорий:
chcon -R -t public_content_t /var/lib/tftpboot/images -
Запустите службу httpd:
systemctl enable httpd --now -
Для настройки службы tftp отредактируйте файл
/usr/lib/systemd/system/tftp.service.nano /usr/lib/systemd/system/tftp.serviceДобавьте в секцию [Install] строку со следующим содержимым:
[Install] WantedBy=multi-user.targetВ файле
/usr/lib/systemd/system/tftp.socketзамените значение параметраListenDatagramс 69 на 0.0.0.0:69, чтобы запустить службу TFTP на 69 порту по IPv4-протоколу. По умолчанию порт публикуется с использованием протокола IPv6.nano /usr/lib/systemd/system/tftp.socket [Unit] Description=Tftp Server Activation Socket [Socket] ListenDatagram=0.0.0.0:69 [Install] WantedBy=sockets.target -
Инициализируйте модули systemd после изменения:
systemctl daemon-reload -
Добавьте службу tftp в автозапуск:
systemctl enable tftp --now -
Для проверки работоспособности выполните следующую команду:
curl -I http://192.168.2.10/images/REDOS/.treeinfoРезультат выполнения команды:
HTTP/1.1 200 OK Date: Tue, 27 Jan 2026 14:22:09 GMT Server: Apache/2.4.66 (RED OS) Last-Modified: Sat, 21 Dec 2024 14:35:05 GMT ETag: "4d7-629c8ab55f840" Accept-Ranges: bytes Content-Length: 1239В параметрах команды curlукажите IP-адрес PXE-сервера.
Предварительная настройка хоста с PXE завершена.
Далее на виртуальной машине или сервере, которая будет использована в качестве хоста виртуализации необходимо произвести следующие действия:
-
Настроить 2 сетевых подключения, 1-ое к сети, в которой находиться хост с PXE, 2-ое к сети с Менеджером управления zVirt Max. IP-адреса должны быть получены динамически.
-
В предпочитаемой последовательности загрузки параметр Сеть (PXE) поставить на первое место.
-
После получения IP-адреса от DHCP-сервера, автоматически будет запущено PXE Boot Menu.
2. Автоматизация развертывания с помощью Kickstart
Для автоматизации процесса развертывания хостов виртуализации в данном пункте описано использование Kickstart.
-
Создайте каталоги для образов пакетов репозиториев:
mkdir -p /var/lib/tftpboot/images/zVirt-Max/ mkdir -p /var/lib/tftpboot/images/zVirt-Max-extras/ -
Смонтируйте iso-образы с репозиториями zVirt-Max к системе и скопируйте содержимое в каталоги
/var/lib/tftpboot/images/ zVirt-Max/и/var/lib/tftpboot/images/zVirt-Max-extras/:mount -t iso9660 -o loop zvirt_max_certified_XXXXXXXXXXXX.iso /mnt/ cp -vR /mnt/* /var/lib/tftpboot/images/zVirt-Max/ umount /mnt/mount -t iso9660 -o loop zvirt_max_certified_extras_XXXXXXXXXXXX.iso /mnt/ cp -vR /mnt/* /var/lib/tftpboot/images/zVirt-Max-extras/ umount /mnt/ -
Скопировать или создать в каталоге
/var/lib/tftpboot/images/файл kickstart ks-zvirtmax.cfg, описывающий автоматическую установку.Файл Kickstart может быть расположен: на съемном носителе (DVD, USB); на локальном жестком диске; на доступном сетевом ресурсе. Сначала устанавливаемая система загружается с PXE-сервера, затем файл Kickstart загружается с настроенного ресурса или носителя, а перечисленные в файле настройки и пакеты в дальнейшем будут применены и установлены в системе. Команды для копирования (приведен пример копирования из директории, способ будет меняться в зависимости от используемого источника файла):
cp /<путь_к_файлу>/ /var/lib/tftpboot/images/ks-zvirtmax.cfgКоманды для создания:
nano /var/lib/tftpboot/images/ks-zvirtmax.cfg -
В файле ks-zvirtmax.cfg указать путь до репозиториев zVirt-Max-extras и zVirt-Max-extras (Пример файла ks-zvirtmax.cfg в Приложении).
-
После создания файла kickstart рекомендуется проверить его формат. Для этого в репозитории РЕД ОС имеется программа ksvalidator в составе пакета pykickstart.
-
Для установки пакета выполните команду:
dnf install pykickstart -
Для проверки формата файла выполните команду (с правами локального пользователя):
ksvalidator /<путь_к_файлу>/ks-zvirtmax.cfgКоманда ksvalidator должна выполниться без ошибок.
-
-
Открыть файл конфигурации загрузчика на PXE-сервере и добавить параметр
inst.ks=.-
Для систем с BIOS можно использовать файл
defaultили путь, определяемый с помощью IP-адреса. В конец строки append необходимо добавить параметрinst.ks=:default menu.c32 PROMPT 0 TIMEOUT 150 MENU TITLE PXE Menu LABEL REDOS 7.3 MENU LABEL REDOS 7.3 KERNEL images/redos-7.3/images/pxeboot/vmlinuz APPEND initrd=images/redos-7.3/images/pxeboot/initrd.img ramdisk_size=128000 ip=dhcp inst.repo=http://<IP-OR-FQDN>/redos-7.3/ inst.ks=http://<IP-OR-FQDN>/images/ks-zvirtmax.cfg -
Для систем с UEFI параметр
inst.ks=добавляется к строке kernel в файлеgrub.cfg:function load_video { insmod efi_gop insmod efi_uga insmod video_bochs insmod video_cirrus insmod all_video } load_video set gfxpayload=keep insmod gzio menuentry 'REDOS 7.3' { linux images/redos-7.3/images/pxeboot/vmlinuz ip=dhcp kernel vmlinuz inst.repo=http://<IP-OR-FQDN>/redos-7.3/ inst.ks=http://<IP-OR-FQDN>/images/ks-zvirtmax.cfg initrd images/redos-7.3/images/pxeboot/initrd.img }
-
Далее на виртуальной машине или сервере, которая будет использована в качестве хоста виртуализации необходимо произвести следующие действия:
-
Настроить 2 сетевых подключения, 1-ое к сети, в которой находиться хост с PXE, 2-ое к сети с Менеджером управления zVirt Max. IP-адреса должны быть получены динамически.
-
В предпочитаемой последовательности загрузки параметр Сеть (PXE) поставить на первое место.
-
После получения IP-адреса от DHCP-сервера, автоматически будет запущено PXE Boot Menu, в котором по истечении 5 секунд будет выбран параметр PXE zVirt Boot и начнется установка образа ноды zVirt Max c параметрами из файла ks-zvirtmax.cfg.
3. Приложение
# Использовать графический режим установки
graphical
# Подключить репозитории zVirt Max
repo --name=zvirt-max-main --baseurl=http://<IP-OR-FQDN>/images/zVirt-Max/
repo --name=zvirt-max-extras --baseurl=http://<IP-OR-FQDN>/images/zVirt-Max-extras/
# Установить английскую раскладку клавиатуры
keyboard --xlayouts='us'
# Установить язык ОС
lang en_US.UTF-8
# Настройка сети
network --bootproto=dhcp --device=enp1s0 --onboot=on --ipv6=auto --no-activate
network --hostname=localhost.localdomain
# Установка часового пояса
timezone Europe/Moscow --utc
# Удаляем разделы на первом блочном устройстве
#zerombr
clearpart --drives=/dev/sda --all
bootloader --boot-drive=/dev/sda
# Создаём разделы:
# /boot - 1G
# в случае UEFI - /boot/efi - 512M
# swap - 10G
# lvm:
## / - 80%
## /var/log -20%
part /boot --fstype="ext4" --ondisk=sda --size=1024
part /boot/efi --fstype="ext4" --ondisk=sda --size=512
part swap --ondisk=sda --size=10240
part pv.765 --fstype="lvmpv" --ondisk=sda --size=60 --grow
volgroup ro_redos --pesize=4096 pv.765
logvol / --fstype="ext4" --name=root --vgname=ro_redos --percent=80 --grow
logvol /var/log --fstype="ext4" --name=var_log --vgname=ro_redos --percent=20 --grow
# Пароль root - 1
rootpw --iscrypted $6$ZSc0E8tHGlhaNxlE$LmfvcZ8X99cx7og1iqXxYM4o2TenBAPLnD6ddi7BsrEfFqwkb/zH1jIZm3WQYLyaZfPPwyKSPsm6tFVcT5xYK/
# Включить механизм kdump
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
# Установить вариант "Минимальный сервер РедОС" и пакеты zVirt Max
%packages
@^server-minimal
zvirt-hosted-engine
kexec-tools
%end
# Перезагрузить после установки
reboot
# Установить политики безопасности
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
# После установки отключить репозитории РедСофт, создать репозитории zVirt,
# Разрешить удалённый доступ по ssh пользователю root
%post
dnf config-manager --disable '*'
echo -e "[zvirt-max-main]
name=zvirt 3.X certified main
baseurl=http://<IP-OR-FQDN>/images/zVirt-Max/
gpgcheck=0
enabled=1
[zvirt-max-extras]
name=zvirt 3.X certified extras
baseurl=http://<IP-OR-FQDN>/images/zVirt-Max-extras/
gpgcheck=0
enabled=1
" > /etc/yum.repos.d/zvirt.repo
sed -i 's/no/yes/' /etc/ssh/sshd_config.d/01-permitrootlogin.conf
%end