После завершения этого раздела вы сможете:
объяснить основные концепции и архитектуру Kickstart;
создать файл Kickstart с помощью веб-сайта Kickstart Generator;
изменить существующий файл Kickstart с помощью текстового редактора и проверить его синтаксис с помощью команды ksvalidator;
опубликовать файл Kickstart для установщика;
выполнить сетевую установку с помощью Kickstart.
Установку Red Hat Enterprise Linux можно автоматизировать с помощью функции Kickstart. При использовании Kickstart все, что нужно установщику Anaconda для выполнения установки, включая разбиение диска на разделы, конфигурацию сетевого интерфейса, выбор пакетов и другие параметры, можно указать в текстовом файле Kickstart. С помощью этого текстового файла установщик Anaconda выполняет установку без дальнейшего взаимодействия с пользователем.
Функционал Kickstart в Red Hat Enterprise Linux аналогичен Jumpstart в Oracle Solaris или использованию файла ответов автоматической установки в Microsoft Windows.
Файлы Kickstart начинаются со списка команд, которые определяют, как устанавливать целевую машину. Строки, начинающиеся с символа #, являются комментариями и игнорируются установщиком. Дополнительные разделы начинаются с директивы, первый символ которой ― %, и заканчиваются на строке с директивой %end.
#
%
%end
В разделе %packages можно задать программное обеспечение, которое должно быть установлено в целевой системе. Указывайте отдельные пакеты по именам (без версий). Группы пакетов, указанные по имени или идентификатору, распознаются по начальному символу @. Группы сред (группы, состоящие из групп пакетов) распознаются по начальным символам @^. Указывайте модули, потоки и профили, используя синтаксис @module:stream/profile.
%packages
@
@^
module:stream/profile
Группы имеют обязательные компоненты, компоненты по умолчанию и необязательные компоненты. Как правило, Kickstart устанавливает обязательные компоненты и компоненты по умолчанию. Чтобы исключить пакет или группу пакетов из установки, добавьте перед ними символ -. При этом исключенные пакеты или группы пакетов все равно могут быть установлены, если они являются обязательными зависимостями других запрашиваемых пакетов.
-
В конфигурации Kickstart часто используются два дополнительных раздела ― %pre и %post, которые содержат команды сценариев оболочки для дальнейшей настройки системы. Сценарий %pre выполняется до разбиения диска на разделы. Как правило, этот раздел используется только в том случае, если перед разбиением диска необходимы действия по распознаванию или инициализации устройства. Сценарий%post выполняется после завершения установки.
%pre
%post
Основные команды Kickstart необходимо указывать до разделов %pre, %post и %packages. Размещать эти разделы в файле можно в любом порядке.
Команды, связанные с установкой
Эти команды позволяют определить источник установки и способ ее выполнения. Для каждой команды приводится пример.
url: указывает URL-адрес установочного носителя.
url
url --url="http://classroom.example.com/content/rhel8.2/x86_64/dvd/"
repo: указывает, где искать дополнительные пакеты для установки. Эта опция должна указывать на действующий репозиторий yum.
repo
repo --name="appstream" --baseurl=http://classroom.example.com/content/rhel8.2/x86_64/dvd/AppStream/
text: принудительно выполняет установку в текстовом режиме.
text
vnc: позволяет удаленно просматривать графическую установку через VNC.
vnc
vnc --password=redhat
Команды, связанные с разбиением дисков на разделы
Эти команды позволяют определить используемые устройства и таблицу разделов.
clearpart: удаляет разделы из системы перед созданием новых разделов. По умолчанию разделы не удаляются.
clearpart
clearpart --all --drives=sda,sdb --initlabel
part: указывает размер, формат и имя раздела.
part
part /home --fstype=ext4 --label=homes --size=4096 --maxsize=8192 --grow
autopart: автоматически создает корневой раздел, раздел подкачки и загрузочный раздел для конкретной архитектуры. На достаточно больших дисках также создается раздел /home.
autopart
/home
ignoredisk: контролирует доступ установщика Anaconda к дискам, присоединенным к системе.
ignoredisk
ignoredisk --drives=sdc
bootloader: определяет, куда установить загрузчик.
bootloader
bootloader --location=mbr --boot-drive=sda
volgroup, logvol: создают группы томов и логические тома LVM.
volgroup
logvol
part pv.01 --size=8192 volgroup myvg pv.01 logvol / --vgname=myvg --fstype=xfs --size=2048 --name=rootvol --grow logvol /var --vgname=myvg --fstype=xfs --size=4096 --name=varvol
zerombr: инициализирует диски, тип таблицы разделов которых не распознан.
zerombr
Команды, связанные с сетью
Эти команды позволяют определить сетевые функции, используемые хостом.
network: настраивает информацию о сети для целевой системы. Активирует сетевые устройства в среде установщика.
network
network --device=eth0 --bootproto=dhcp
firewall: определяет конфигурацию брандмауэра для целевой системы.
firewall
firewall --enabled --service=ssh,http
Команды, связанные с местоположением и безопасностью
Эти команды позволяют настроить параметры, связанные с безопасностью, языком и регионами.
lang: задает язык, который будет использоваться во время установки, и язык по умолчанию для установленной системы. Обязательная команда.
lang
lang en_US.UTF-8
keyboard: задает тип клавиатуры системы. Обязательная команда.
keyboard
keyboard --vckeymap=us --xlayouts=''
timezone: задает часовой пояс, NTP-серверы и указывает, хранят ли аппаратные часы системы время в формате UTC.
timezone
timezone --utc --ntpservers=time.example.com Europe/Amsterdam
authselect: задает параметры аутентификации. Опции, распознаваемые командой authselect, действительны для этой команды. См. man-страницу authselect(8).
authselect
rootpw: устанавливает первоначальный пароль root.
rootpw
root
rootpw --plaintext redhat or rootpw --iscrypted $6$KUnFfrTzO8jv.PiH$YlBbOtXBkWzoMuRfb0.SpbQ....XDR1UuchoMG1
selinux: задает режим SELinux для установленной системы.
selinux
selinux --enforcing
services: изменяет стандартный набор служб, которые будут работать в цели systemd по умолчанию.
services
systemd
services --disabled=network,iptables,ip6tables --enabled=NetworkManager,firewalld
group, user: создают локальных пользователей и локальные группы в целевой системе.
group
user
group --name=admins --gid=10001 user --name=jdoe --gecos="John Doe" --groups=admins --password=changeme --plaintext
Другие команды
Эти команды позволяют настроить различные аспекты, связанные с ведением журнала во время установки и состоянием питания хоста по завершении.
logging: определяет, каким образом Anaconda будет вести журнал во время установки.
logging
logging --host=loghost.example.com --level=info
firstboot: если этот параметр включен (enabled), агент установки запускается при первой загрузке системы. Должен быть установлен пакет initial-setup.
firstboot
firstboot --disabled
reboot, poweroff, halt: указывают действие, которое необходимо выполнить по окончании установки.
reboot
poweroff
halt
С помощью утилиты ksverdiff из пакета pykickstart можно идентифицировать изменения в синтаксисе файла Kickstart между двумя версиями Red Hat Enterprise Linux или Fedora.
Например, команда ksverdiff -f RHEL7 -t RHEL8 идентифицирует изменения в синтаксисе между RHEL 7 и RHEL 8. Доступные версии указаны в верхней части файла /usr/lib/python3.6/site-packages/pykickstart/version.py.
/usr/lib/python3.6/site-packages/pykickstart/version.py
Первая часть файла состоит из команд установки, таких как разбиение диска на разделы и источник установки.
#version=RHEL8 ignoredisk --only-use=vda # System bootloader configuration bootloader --append="console=ttyS0 console=ttyS0,115200n8 no_timer_check net.ifnames=0 crashkernel=auto" --location=mbr --timeout=1 --boot-drive=vda # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all --initlabel # Use text mode install text repo --name="appstream" --baseurl=http://classroom.example.com/content/rhel8.2/x86_64/dvd/AppStream/ # Use network installation url --url="http://classroom.example.com/content/rhel8.2/x86_64/dvd/" # Keyboard layouts # old format: keyboard us # new format: keyboard --vckeymap=us --xlayouts='' # System language lang en_US.UTF-8 # Root password rootpw --plaintext redhat # System authorization information auth --enableshadow --passalgo=sha512 # SELinux configuration selinux --enforcing firstboot --disable # Do not configure the X Window System skipx # System services services --disabled="kdump,rhsmcertd" --enabled="sshd,rngd,chronyd" # System timezone timezone America/New_York --isUtc # Disk partitioning information part / --fstype="xfs" --ondisk=vda --size=10000
Вторая часть содержит раздел %packages, в котором указано, какие пакеты и группы пакетов должны быть установлены, а какие нет.
%packages @core chrony cloud-init dracut-config-generic dracut-norescue firewalld grub2 kernel rsync tar -plymouth %end
Последняя часть содержит любые сценарии установки %pre и %post.
%post --erroronfail # For cloud images, 'eth0' _is_ the predictable device name, since # we don't want to be tied to specific virtual (!) hardware rm -f /etc/udev/rules.d/70* ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules # simple eth0 config, again not hard-coded to the build hardware cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EOF DEVICE="eth0" BOOTPROTO="dhcp" ONBOOT="yes" TYPE="Ethernet" USERCTL="yes" PEERDNS="yes" IPV6INIT="no" EOF %end
Если в файле Kickstart не указаны обязательные значения, установщик отобразит интерактивный запрос или установка будет полностью прекращена.
Для автоматизации установки Red Hat Enterprise Linux выполните следующие действия.
Создайте файл Kickstart.
Опубликуйте файл Kickstart для установщика.
Загрузите установщик Anaconda и укажите ему расположение файла Kickstart.
Создать файл Kickstart можно одним из следующих способов:
с помощью веб-сайта Kickstart Generator;
с помощью текстового редактора.
На веб-сайте Kickstart Generator по адресу https://access.redhat.com/labs/kickstartconfig/ пользователь может указать нужные значения в диалоговых окнах, и на основе этих значений будет создан текстовый файл директив Kickstart. Каждое диалоговое окно соответствует настраиваемым элементам в установщике Anaconda.
https://access.redhat.com/labs/kickstartconfig/
На момент написания курса на веб-сайте Kickstart Generator не было варианта выбора Red Hat Enterprise Linux 8. Был доступен вариант Red Hat Enterprise Linux 8 Beta.
Создание файла Kickstart с нуля — это обычно довольно сложный процесс, а вот редактировать существующий файл Kickstart удобно и полезно. При каждой установке создается файл /root/anaconda-ks.cfg с директивами Kickstart, используемыми в ходе установки. Этот файл является хорошей отправной точкой при создании файла Kickstart вручную.
/root/anaconda-ks.cfg
ksvalidator — это утилита, проверяющая файл Kickstart на наличие синтаксических ошибок. Она обеспечивает правильность ключевых слов и опций, но не проверяет URL-адреса, имена отдельных пакетов или групп, а также сценарии %post и %pre. Например, если директива firewall --disabled написана с ошибками, ksvalidator может выдать одно из следующих сообщений:
firewall --disabled
[user@host ~]$ ksvalidator /tmp/anaconda-ks.cfg The following problem occurred on line 10 of the kickstart file: Unknown command: frewall [user@host ~]$ ksvalidator /tmp/anaconda-ks.cfg The following problem occurred on line 10 of the kickstart file: no such option: --dsabled
[user@host ~]$
ksvalidator /tmp/anaconda-ks.cfg
Утилита ksvalidator содержится в пакете pykickstart.
Сделайте файл Kickstart доступным для установщика, поместив его в одно из следующих мест:
сетевой сервер, доступный во время установки через FTP, HTTP или NFS;
доступный USB-диск или компакт-диск;
локальный жесткий диск в устанавливаемой системе.
У установщика должен быть доступ к файлу Kickstart, чтобы он мог начать автоматическую установку. В наиболее распространенном методе автоматизации используется сетевой сервер, например FTP-, веб- или NFS-сервер. Сетевые серверы упрощают обслуживание файла Kickstart, поскольку изменения достаточно внести один раз, а затем их можно использовать для будущих установок.
Также удобно предоставлять файлы Kickstart на USB- или компакт-диске. Файл Kickstart можно разместить на загрузочном носителе, используемом для запуска установки. Однако в случае изменения файла Kickstart необходимо будет создать новый установочный носитель.
Размещение файла Kickstart на локальном диске позволяет быстро переустановить систему.
После выбора метода публикации файла Kickstart необходимо указать установщику, где находится файл Kickstart, для чего необходимо передать параметр inst.ks=LOCATION ядру установки. Вот некоторые примеры:
LOCATION
inst.ks=http://server/dir/file
server
dir
file
inst.ks=ftp://server/dir/file
inst.ks=nfs:server:/dir/file
inst.ks=hd:device:/dir/file
device
inst.ks=cdrom:device
При установке виртуальной машины с помощью Virtual Machine Manager или virt-manager можно указать URL-адрес файла Kickstart в разделе URL Options. При установке физической машины выполните загрузку с установочного носителя и нажмите клавишу Tab для прерывания процесса загрузки. Передайте параметр inst.ks=LOCATION ядру установки.
Глава Kickstart installation basics руководства Performing an advanced RHEL installation: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/performing_an_advanced_rhel_installation/kickstart-installation-basics_installing-rhel-as-an-experienced-user#kickstart-installation-basics_installing-rhel-as-an-experienced-user
Раздел Kickstart commands for installation program configuration and flow control в приложении Appendix B. Kickstart commands and options reference руководства Performing an advanced RHEL installation: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/performing_an_advanced_rhel_installation/kickstart-installation-basics_installing-rhel-as-an-experienced-user#kickstart-commands-for-installation-program-configuration-and-flow-control_kickstart-commands-and-options-reference
Глава Boot options руководства Performing an advanced RHEL installation: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/performing_an_advanced_rhel_installation/kickstart-installation-basics_installing-rhel-as-an-experienced-user#kickstart-and-advanced-boot-options_installing-rhel-as-an-experienced-user