Как установить virt-install и kickstart на Rocky Linux 10
Дата публикации: 2025-09-19T13:36:59
Теги: ["rocky", "virt-install", "kickstart"]
Установка Kickstart - это автоматизированный метод установки дистрибутивов Linux, таких как Red Hat Enterprise Linux (RHEL), Rocky, AlmaLinux, CentOS, Fedora или их производные. Он позволяет предварительно определить параметры установки в файле конфигурации, что делает его идеальным для развертывания систем быстро и последовательно без ручного вмешательства.
Как работает Kickstart
- Kickstart файл:
* Простой текстовый файл, который содержит ответы на все вопросы, обычно задаваемые программой установки, такие как:
* Разделение диска
* Программные программы для установки
* Конфигурация сети для сервера
* Временная зона
* Пароль пользователя root
* Имя файла: `ks.cfg`
- Процесс установки:
* Во время установки система читает файл Kickstart и выполняет все шаги, указанные в нем, не заставляя пользователя для ввода.
- Развертывание:
* Файл Kickstart может быть доставлен в целевую систему через:
* локальное хранилище (например, USB, CD/DVD или жесткий диск).
* сетевой сервер (например, HTTP, FTP или NFS).
Автоматическая установка VM с использованием Virt-install и kickstart
Рассматриваем пример:
- Установка операционной Linux OS из ISO
- Использовать kickstart для автоматизации установки ОС
Шаг 1. Скачать OS ISO изображение (DVD)
Скачать Enterprise Linux DVD iso. Это может быть RHEL, CentOS Stream, Rocky Linux, AlmaLinux, Oracle Linux, etc.
В этом примере мы загружаем Rocky Linux DVD iso.
wget https://download.rockylinux.org/pub/rocky/10/isos/x86_64/Rocky-10.0-x86_64-dvd1.iso
Переместить файл ISO в каталог хранилища по умолчанию.
sudo mv Rocky-10.0-x86_64-dvd1.iso /var/lib/libvirt/images/Rocky-10.0-x86_64-dvd1.iso
Шаг 2. Создание сценария установки kickstart
Мы начнем с создания нового файла под названием `ks.cfg`:
vim ks.cfg
Содержание в файле:
# System language lang ru_RU.UTF-8 # Keyboard layout keyboard us # Network configuration network --bootproto=dhcp # Timezone timezone Europe/Moscow --utc # Root password (plain text) rootpw --plaintext StrongRootPassw0rd # Skip the GUI installation (remove for desktop installs) skipx # Run installer in text mode text # Clear the Master Boot Record zerombr # Partitioning information bootloader --timeout=1 --location=mbr --append="net.ifnames=0 biosdevname=0" clearpart --all --initlabel part /boot --fstype=ext4 --size=512 part swap --size=1024 part / --fstype=xfs --grow --size=1 # Packages %packages @core @base openssh-server openssh-clients vim bash-completion sudo selinux-policy-devel net-tools tar bzip2 bind-utils policycoreutils-python-utils python3 python3-libselinux tar yum-utils firewalld %end # Automatically reboot after installation and eject media reboot --eject # Post-installation script %post echo "Installation complete!" > /root/installation-log.txt %end
Дополнительные варианты, которые вы можете использовать в Kickstart:
Использовать зашифрованный пароль пользователя
# Generate encrypted passsword
## Python3
python3 -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'
## Python2
python -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'
Для root пользователя:
rootpw --iscrypted
Добавление стандартной учетной записи пользователя
# plain text password user --groups=wheel --name=Rocky --plaintext --password=StrongUserPassword --gecos="Rocky User" # Encrypted password user --groups=wheel --name=Rocky --iscrypted --password=--gecos="Rocky User"
Установка статического IP-адреса
network --bootproto=static --ip=192.168.122.100 --gateway=192.168.122.1 --netmask=255.255.255.0 --noipv6 --device=eth0 --nameserver=192.168.122.1,8.8.8.8 --activate
Настройка пользовательских разделов с различными размерами
part / --fstype=ext4 --size=10240 part /var --fstype=ext4 --size=20480 part swap --size=2048
Использование LVM (Logical Volume Manager)
zerombr clearpart --all --initlabel autopart --type=lvm
Использование LVM (Logical Volume Manager) с пользовательскими разделами
# Clear existing partitions and create a new layout clearpart --all --initlabel # Create a standard partition for /boot part /boot --fstype=ext4 --size=1024 # Create PV for LVM that uses the entire remaining disk space part pv.01 --grow ## Create a new physical volume of 50GB #part pv.01 --size=50000 # Create a volume group named "vg_root" volgroup vg_root --pesize=4096 pv.01 # Create logical volumes within the "vg_root" volume group logvol / --vgname=vg_root --name=lv_root --size=20000 --fstype=ext4 logvol /home --vgname=vg_root --name=lv_home --size=10000 --fstype=ext4 logvol swap --vgname=vg_root --name=lv_swap --size=4096 --fstype=swap
Конфигурации загрузки, такие как консоль и изменение интерфейсов сетевых карт.
bootloader --timeout 1 --append "console=tty0 console=ttyS0,115200 net.ifnames.prefix=net quiet"
Установлено состояние SELinux на установленной системе
# Enforcing selinux --enforcing # Permissive selinux --permissive # Disabled selinux --disabled
Включить/Отключить услуги
# Comma separated list services --disabled=auditd,cups,smartd,nfslock services --enabled=sshd,firewalld,tuned
Настройка серверов NTP
timezone Europe/Moscow --ntpservers=time.google.com,time.windows.com
Установка VNC
Чтобы можно было удаленно просматривать графическую установку через VNC. Этот метод, как правило, предпочтителен по сравнению с текстовым режимом, поскольку в текстовых инсталляциях есть некоторые размеры и языковые ограничения
vnc --host=0.0.0.0 --port=5900 --password=Password01
Отключить IPv6 (Добавить в %post и до его %end)
echo "net.ipv6.conf.all.disable_ipv6 = 1" > /etc/sysctl.d/50-ipv6.conf echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.d/50-ipv6.conf echo "net.ipv6.conf.lo.disable_ipv6 = 1" >> /etc/sysctl.d/50-ipv6.conf sed -i -e '/^::1/d' /etc/hosts sed -i -e 's,^OPTIONS=",OPTIONS="-4 ,g' -e 's, ",",' /etc/sysconfig/chronyd sed -Ei -e 's,^(#|)AddressFamily .*,AddressFamily inet,' /etc/ssh/sshd_config sed -i -e 's,^IPv6_rpfilter=yes,IPv6_rpfilter=no,' /etc/firewalld/firewalld.conf sed -i -e '/dhcpv6-client/d' /etc/firewalld/zones/public.xml
Шаг 3. Создание экземпляра VM с помощью kickstart и virt-install
Определение переменных, используемых в установке:
VM_NAME=rocky10.0 # Name of VM to create DISK_SIZE=50 # Create 50GB disk size MEM_SIZE=2048 # Memory setting in MiB VCPUS=2 # CPU Cores count BR_NAME=virbr0 # Bridge network name OS_VARIANT="rhel10.0" # List using osinfo-query os INST_GRAPHICS=none # Install graphics: none, vnc, spice ISO_FILE=/var/lib/libvirt/images/Rocky-10.0-x86_64-dvd1.iso # Path to ISO file
Создайте экземпляр VM с помощью файла конфигурации virt-install и kickstart.
sudo virt-install \
--name $VM_NAME \
--memory=$MEM_SIZE \
--vcpus=$VCPUS \
--location $ISO_FILE \
--disk size=${DISK_SIZE} \
--network bridge=$BR_NAME \
--graphics=$INST_GRAPHICS \
--os-variant=$OS_VARIANT \
--console pty,target_type=serial \
--initrd-inject ks.cfg --extra-args "inst.ks=file:/ks.cfg console=tty0 console=ttyS0,115200n8"
Процесс инсталляции должен начинаться и развиваться автоматически.
После установки вы должны получить страницу входа:
Rocky Linux 10.0 (Red Quartz) Kernel 6.12.0-55.12.1.el10_0.x86_64 on an x86_64 Activate the web console with: systemctl enable --now cockpit.socket localhost login:
Войти как root пользователь с паролем в файле `ks.cfg`.
localhost login: root Password: [root@localhost ~]# cat /etc/redhat-release Rocky Linux release 10.0 (Red Quartz)
Мы можем проверить схему присвоения IP-адреса и раздела диска после завершения установки ОС.
[root@localhost ~]# ip ad 1: lo:mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:fa:af:7e brd ff:ff:ff:ff:ff:ff altname enp1s0 inet 192.168.122.226/24 brd 192.168.122.255 scope global dynamic noprefixroute eth0 valid_lft 2765sec preferred_lft 2765sec inet6 fe80::2a46:dfc0:3ef6:b826/64 scope link noprefixroute valid_lft forever preferred_lft forever [root@localhost ~]# df -hT Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev tmpfs tmpfs 888M 0 888M 0% /dev/shm tmpfs tmpfs 355M 5.1M 350M 2% /run /dev/vda3 xfs 49G 1.9G 47G 4% / /dev/vda1 ext4 488M 260M 192M 58% /boot tmpfs tmpfs 178M 0 178M 0% /run/user/0
Завершение
Собственно на этом всё.
Если вам понравился этот пост о том, как установить virt-install и kickstart на Rocky Linux 10, пожалуйста, поделитесь им со своими друзьями в социальных сетях, которым может быть интересна эта статья или оставьте комментарий ниже.