@ Карта сайта News Автора!

Bog BOS: kickstart - установка Linux в пакетном режиме

Последние изменения:
2024.05.03: sysadmin: От CentOS 7 к Rocky Linux 8

Последнее изменение файла: 2024.04.04
Скопировано с www.bog.pp.ru: 2024.05.28

Bog BOS: kickstart - установка Linux в пакетном режиме

Система установки Linux anaconda (Fedora, RHEL/CentOS) имеет пакетный режим, когда команды установки берутся из файла. Это позволяет установить сотни серверов в автоматическом режиме, один раз отредактировав протокол установки. До RHEL 7 была возможность обновления системы в пакетном режиме.

Последовательность подготовки к пакетной установке и опции установщика anaconda

Для установки в пакетном режиме необходимо:

  1. создать текстовый файл с командами kickstart
  2. выложить его в доступном установщику месте (устройство хранения, флешка, CD/DVD, сетевой сервер)
  3. обеспечить возможность загрузки установщика, например, PXE для BIOS (используется PXELINUX (вариант ISOLINUX)) или PXE для UEFI (используется GRUB2)
  4. обеспечить доступность установочных файлов и репозиториев для установщика - копия дерева файлов (устройство хранения, флешка, CD/DVD, сетевой сервер); RockyLinux уже развёрнут при синхронизации в ftp://имя-сервера/pub/RockyLinux8.9/BaseOS/x86_64/os/; адрес указан в скрипте kickstart
  5. загрузить установщик и указать ему местонахождение файла с командами kickstart, если не обеспечен автоматический выбор файла

Опции установщика anaconda (до RHEL7 назывался просто ks; можно указывать несколько раз - до первой удачи):

Если указано устройство, но не указано имя файла, то ищется файл ks.cfg в корне.

Если не указано и устройство, то используется NFS сервер с адресом, указанным в DHCP опции next-server (по умолчанию - адрес DHCP сервера), и файл, указанный в DHCP опции filename (по умолчанию - "/kickstart/"). Если filename завершается на "/", то в конец приписывается строка, состоящая из IP-адреса клиента, тире и "kickstart" (10.0.0.100-kickstart).

Если установщик грузится по UEFI/PXE с помощью GRUB2, то параметризовать сервер можно непосредственно в grub.conf-IPадрес

Формат командного файла

Командный файл kickstart является текстовым файлом (ASCII), каждая команда на отдельной строке, комментарии начинаются с символа '#', при установке создаётся протокол в формате kickstart - /root/anaconda-ks.cfg (осторожно: некоторые версии установщика создают не совсем корректный anaconda-ks.cfg, например, необходимо добавлять суффиксы архитектуры ".i686" к именам удаляемых из группы пакетов), состоит из следующих секций (секция команд первой, секция пакетов обязательно второй), в конце секции (кроме секции команд) должна быть строка "%end":

  1. секция команд, при отсутствии обязательных параметров установщик запросит их
  2. секция выбора пакетов (%packages)
  3. скрипты, выполняемые после разбора kickstart файла (%pre); необязательная секция; можно использовать несколько раз
  4. скрипты, выполняемые после создания файловых систем, но до установки (%pre-install); необязательная секция; можно использовать несколько раз
  5. скрипты, выполняемые после установки (%post); необязательная секция; можно использовать несколько раз
  6. %onerror; необязательная секция
  7. %traceback; необязательная секция
  8. %anaconda (поведение установщика anaconda); необязательная секция; умолчания в /usr/share/anaconda/interactive-defaults.ks; pwpolicy - определение политики задания паролей для root, user и luks при интерактивной установке (kickstart их игнорирует); installclass - класс установки
  9. %addon; необязательная секция; можно использовать несколько раз

Утилита ksvalidator (пакет pykickstart) позволяет проверить синтаксис командного файла (не проверяет секции %packages, %pre, %pre-install и %post). Ключи:

Секция команд

Секция команд, состоит из строк, каждая из которых содержит одну из команд (порядок не имеет значения, пустые строки игнорируются, при указании блочных устройств можно указывать кратко - sda (рискованно) - или подробно - /dev/disk/by-id/scsi-SATA_INTEL_SSDSC2BB2BTWL4333048Y240NGN-part1, допустимы шаблоны в стиле shell, multipath устройства рекомендуется указывать по WWID):

Секция выбора пакетов

Секция выбора пакетов начинается с команды %packages, завершается командой %end, можно использовать несколько секций. Необходимые пакеты можно указывать по одному на строке с помощью имени пакета, имени или идентификатора группы пакетов (перед именем необходимо указать символ "@"), имени или идентификатора супергруппы (environment) пакетов (перед именем необходимо указать символы "@^"; только 1 супергруппа), потоки модулей (@имя-модуля[:поток[/профиль]]; только 1 поток модуля; можно несколько профилей потока). Команда module позволяет явно указать пакеты потока модуля. Рекомендуется супергруппа "Minimal Install" (начальная настройка требует Gnome и X Window System, которые сюда не включены). Группы Core и Base включаются по умолчанию. В именах пакетов можно использовать шаблоны ('*') - не советую, т.к. результат может удивить особенно после появления новой версии. Для исключения пакетов и группы пакетов надо указать их имя, предварённое символом "-". Имена и содержимое групп (<group>) и супергрупп (<environment>) можно посмотреть в файлах repodata/*-вариант-архитектура-comps.xml (repodata/*-comps-репозиторий-архитектура.xml), имена модулей по команде "yum module list" (после установки ;). В описании группы и супергруппы пакеты помечаются как

Опции команды %packages:

Опции для групп пакетов:

Секция доустановочных скриптов

Секция доустановочных скриптов начинается с команды %pre, завершается командой %end. Включённые сюда команды выполняются после разбора скрипта kickstart, но до начала установки (обработаны lang, keyboard и url). В это момент уже работает сеть, но не работает DNS. chroot не установлен. В примере описывается создание скрипта kickstart, который затем включается командой %include. Ключи:

Пример из учебника - ввод параметров с терминала (старая anaconda):

%pre
#!/bin/sh
exec < /dev/tty6 > /dev/tty6
chvt 6
clear
echo "################################"
echo "# Running Pre Configuration    #"
echo "################################"
echo -n "Give hostname: "
read hostname
hostname $hostname
echo $hostname > /home/hostname
exec < /dev/tty1 > /dev/tty1
chvt 1 
%end

Пример из учебника - передача параметров в секцию команд из строки загрузки (awk отсутствует в /bin:/usr/bin, имя параметра не может содержать '.')

boot: ... ESXIP=10.0.0.20 ...

%pre (and %post if needed)
#ESXIP=`awk -F "ESXIP=" '{print $2}' /proc/cmdline | cut -d " " -f 1` 
#ESXIP=`cat /proc/cmdline |perl -e 'if (<> =~ /\sESXIP=(.*?)\s/) {print $1}'` 
ESXIP=`perl -ne '/ESXIP=(\S+)/ && print $1' /proc/cmdline` 
# set -- `cat /proc/cmdline` 
# for I in $*; do case "$I" in *=*) eval $I;; esac; done 

Секция предустановочных скриптов

Секция предустановочных скриптов начинается с команды %pre-install, завершается командой %end. Включённые сюда команды выполняются после создания и монтирования файловых систем в /mnt/sysimage, до chroot, сеть сконфигурирована (из командной строки). Можно иметь несколько секций с различными интерпретаторами.

Секция послеустановочных скриптов

Секция послеустановочных скриптов в конце файла начинается с команды %post, завершается командой %end. Включённые сюда команды выполняются после установки перед перезагрузкой. Предварительно выполняется chroot на /mnt/sysimage (свежеустановленная корневая файловая система), если не указано обратное. Можно иметь несколько секций %post (с chroot и без). В это момент уже работает сеть, но не работает DNS (кроме случаев статической настройки сети). Ключи:

Секция обработки ошибок установщика

Секция обработки ошибок установщика начинается с команды %traceback, завершается командой %end. Включённые сюда команды выполняются в случае возникновения ошибок. Может быть несколько секций, они выполняются последовательно. Ключи:

Секция обработки ошибок при установке

Секция обработки ошибок при установке начинается с команды %onerror, завершается командой %end. Включённые сюда команды выполняются в случае возникновения ошибок установки (не удалось запустить vnc, не удалось установить указанный пакет). Может быть несколько секций, они выполняются последовательно. Ключи:

Секция %addon

Секция %addon содержит дополнительные команды от Red Hat, начинается с команды %addon, завершается командой %end:

Примеры

Ссылки

@ Карта сайта News Автора!

Bog BOS: kickstart - установка Linux в пакетном режиме

Последние изменения:
2024.05.03: sysadmin: От CentOS 7 к Rocky Linux 8



Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru