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

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

Последние изменения:
2022.06.27: sysadmin: тестирование настоящих SSD (KIOXIA CM6-V)

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

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

Система установки Linux anaconda (Fedora, RHEL/CentOS) имеет пакетный режим, когда команды установки берутся из файла. Это позволяет установить сотни серверов в автоматическом режиме, один раз отредактировав протокол установки. Осторожно: некоторые версии установщика создают не совсем корректный anaconda-ks.cfg, например, необходимо добавлять суффиксы архитектуры ".i386" к именам удаляемых из группы пакетов. До RHEL 7 была возможность обновления системы в пакетном режиме.

Опции установщика anaconda

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

  1. создать текстовый файл с командами kickstart
  2. выложить его в доступном установщику месте (диск, флешка, CD/DVD, сетевой сервер)
  3. обеспечить доступность установочных файлов для установщика - копия дерева файлов (диск, флешка, CD/DVD, сетевой сервер)
  4. загрузить установщик и указать ему местонахождение файла с командами kickstart

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

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

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

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

Командный файл 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); необязательная секция; pwpolicy - определение политики задания паролей для root, user и luks; installclass - класс установки (умолчание в /usr/share/anaconda/interactive-defaults.ks)
  9. %addon; необязательная секция

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

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

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

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

Секция выбора пакетов начинается с команды %packages, завершается командой %end, можно использовать несколько секций. Необходимые пакеты можно указывать по одному на строке с помощью имени пакета, имени или идентификатора группы пакетов (перед именем необходимо указать символ "@"), имени или идентификатора супергруппы (environment) пакетов (перед именем необходимо указать символы "@^"). Группы Core и Base включаются по умолчанию. В именах пакетов можно использовать шаблоны ('*') - не советую, т.к. результат может удивить особенно после появления новой версии. Для исключения пакетов и группы пакетов надо указать их имя, предварённое символом "-". Имена и содержимое групп и супергрупп можно посмотреть в файлах repodata/*-вариант-архитектура-comps.xml. В описании группы и супергруппы пакеты помечаются как

Опции команды %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 в пакетном режиме

Последние изменения:
2022.06.27: sysadmin: тестирование настоящих SSD (KIOXIA CM6-V)

TopList

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