Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Автоматическая установка и настройка конфигурации хостов виртуализации

В данной инструкции описан пример автоматической установки хостов виртуализации с использованием технологии PXE и конфигурационного файла Kickstart для системы zVirt MAX.

Для реализации потребуется предварительно подготовить внешний хост с установленными службами TFTP, Apache Web Server, PXE и DHCP-сервером.

В качестве сервера DHCP может быть использован уже существующий в сети сервер, реализованный на базе сетевой ОС или оборудования.

1. Автоматическая установка ноды гипервизора zVirt Max средствами PXE

1.1. Развёртывание сервера удалённой загрузки для автоматической установки ноды гипервизора zVirt Max

В качестве ОС на хосте, на котором будет настраиваться указанный стек, использовалась РЕД ОС 7.3.

Порядок действий для подготовки хоста с PXE:
  1. Установите необходимые пакеты с помощью команды:

    dnf install dhcp-server tftp-server syslinux httpd dnf-plugins-core
  2. Создайте каталоги для служб TFTP и PXE помощью команд:

    mkdir /var/lib/tftpboot/pxelinux.cfg
    mkdir /var/lib/tftpboot/uefi
    mkdir -p /var/lib/tftpboot/images/REDOS
  3. 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
  4. Загрузите файлы для 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/*.*
  5. В случае использования загрузочного 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
  6. В случае использования 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/
  7. Сконфигурируйте 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";
    }
    }
    }
  8. Запустите службу dhcpd:

    systemctl enable dhcpd --now
  9. Создайте загрузочное меню для установки в режиме 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/
  1. Создайте загрузочное меню для установки в режиме 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
    }
  2. Настройте 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>
  1. Назначьте web-контекст Selinux для созданных директорий:

    chcon -R -t public_content_t /var/lib/tftpboot/images
  2. Запустите службу httpd:

    systemctl enable httpd --now
  3. Для настройки службы 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
  4. Инициализируйте модули systemd после изменения:

    systemctl daemon-reload
  5. Добавьте службу tftp в автозапуск:

    systemctl enable tftp --now
  6. Для проверки работоспособности выполните следующую команду:

    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 завершена.

Далее на виртуальной машине или сервере, которая будет использована в качестве хоста виртуализации необходимо произвести следующие действия:

  1. Настроить 2 сетевых подключения, 1-ое к сети, в которой находиться хост с PXE, 2-ое к сети с Менеджером управления zVirt Max. IP-адреса должны быть получены динамически.

  2. В предпочитаемой последовательности загрузки параметр Сеть (PXE) поставить на первое место.

  3. После получения IP-адреса от DHCP-сервера, автоматически будет запущено PXE Boot Menu.

2. Автоматизация развертывания с помощью Kickstart

Для автоматизации процесса развертывания хостов виртуализации в данном пункте описано использование Kickstart.

  1. Создайте каталоги для образов пакетов репозиториев:

    mkdir -p /var/lib/tftpboot/images/zVirt-Max/
    mkdir -p /var/lib/tftpboot/images/zVirt-Max-extras/
  2. Смонтируйте 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/
  3. Скопировать или создать в каталоге /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
  4. В файле ks-zvirtmax.cfg указать путь до репозиториев zVirt-Max-extras и zVirt-Max-extras (Пример файла ks-zvirtmax.cfg в Приложении).

  5. После создания файла kickstart рекомендуется проверить его формат. Для этого в репозитории РЕД ОС имеется программа ksvalidator в составе пакета pykickstart.

    • Для установки пакета выполните команду:

      dnf install pykickstart
    • Для проверки формата файла выполните команду (с правами локального пользователя):

      ksvalidator /<путь_к_файлу>/ks-zvirtmax.cfg
      Команда ksvalidator должна выполниться без ошибок.
  1. Открыть файл конфигурации загрузчика на 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
      }

Далее на виртуальной машине или сервере, которая будет использована в качестве хоста виртуализации необходимо произвести следующие действия:

  1. Настроить 2 сетевых подключения, 1-ое к сети, в которой находиться хост с PXE, 2-ое к сети с Менеджером управления zVirt Max. IP-адреса должны быть получены динамически.

  2. В предпочитаемой последовательности загрузки параметр Сеть (PXE) поставить на первое место.

  3. После получения IP-адреса от DHCP-сервера, автоматически будет запущено PXE Boot Menu, в котором по истечении 5 секунд будет выбран параметр PXE zVirt Boot и начнется установка образа ноды zVirt Max c параметрами из файла ks-zvirtmax.cfg.

3. Приложение

Структура файла ks-zvirtmax.cfg.
# Использовать графический режим установки
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