Red Hat System Administration II 8.2

Автоматизация установки с помощью Kickstart

Задачи

После завершения этого раздела вы сможете:

  • объяснить основные концепции и архитектуру Kickstart;

  • создать файл Kickstart с помощью веб-сайта Kickstart Generator;

  • изменить существующий файл Kickstart с помощью текстового редактора и проверить его синтаксис с помощью команды ksvalidator;

  • опубликовать файл Kickstart для установщика;

  • выполнить сетевую установку с помощью Kickstart.

Создание профиля Kickstart

Установку Red Hat Enterprise Linux можно автоматизировать с помощью функции Kickstart. При использовании Kickstart все, что нужно установщику Anaconda для выполнения установки, включая разбиение диска на разделы, конфигурацию сетевого интерфейса, выбор пакетов и другие параметры, можно указать в текстовом файле Kickstart. С помощью этого текстового файла установщик Anaconda выполняет установку без дальнейшего взаимодействия с пользователем.

Примечание

Функционал Kickstart в Red Hat Enterprise Linux аналогичен Jumpstart в Oracle Solaris или использованию файла ответов автоматической установки в Microsoft Windows.

Файлы Kickstart начинаются со списка команд, которые определяют, как устанавливать целевую машину. Строки, начинающиеся с символа #, являются комментариями и игнорируются установщиком. Дополнительные разделы начинаются с директивы, первый символ которой ― %, и заканчиваются на строке с директивой %end.

В разделе %packages можно задать программное обеспечение, которое должно быть установлено в целевой системе. Указывайте отдельные пакеты по именам (без версий). Группы пакетов, указанные по имени или идентификатору, распознаются по начальному символу @. Группы сред (группы, состоящие из групп пакетов) распознаются по начальным символам @^. Указывайте модули, потоки и профили, используя синтаксис @module:stream/profile.

Группы имеют обязательные компоненты, компоненты по умолчанию и необязательные компоненты. Как правило, Kickstart устанавливает обязательные компоненты и компоненты по умолчанию. Чтобы исключить пакет или группу пакетов из установки, добавьте перед ними символ -. При этом исключенные пакеты или группы пакетов все равно могут быть установлены, если они являются обязательными зависимостями других запрашиваемых пакетов.

В конфигурации Kickstart часто используются два дополнительных раздела ― %pre и %post, которые содержат команды сценариев оболочки для дальнейшей настройки системы. Сценарий %pre выполняется до разбиения диска на разделы. Как правило, этот раздел используется только в том случае, если перед разбиением диска необходимы действия по распознаванию или инициализации устройства. Сценарий%post выполняется после завершения установки.

Основные команды Kickstart необходимо указывать до разделов %pre, %post и %packages. Размещать эти разделы в файле можно в любом порядке.

Команды файла Kickstart

Команды, связанные с установкой

Эти команды позволяют определить источник установки и способ ее выполнения. Для каждой команды приводится пример.

  • url: указывает URL-адрес установочного носителя.

    url --url="http://classroom.example.com/content/rhel8.2/x86_64/dvd/"
  • repo: указывает, где искать дополнительные пакеты для установки. Эта опция должна указывать на действующий репозиторий yum.

    repo --name="appstream" --baseurl=http://classroom.example.com/content/rhel8.2/x86_64/dvd/AppStream/
  • text: принудительно выполняет установку в текстовом режиме.

  • vnc: позволяет удаленно просматривать графическую установку через VNC.

    vnc --password=redhat

Команды, связанные с разбиением дисков на разделы

Эти команды позволяют определить используемые устройства и таблицу разделов.

  • clearpart: удаляет разделы из системы перед созданием новых разделов. По умолчанию разделы не удаляются.

    clearpart --all --drives=sda,sdb --initlabel
  • part: указывает размер, формат и имя раздела.

    part /home --fstype=ext4 --label=homes --size=4096 --maxsize=8192 --grow
  • autopart: автоматически создает корневой раздел, раздел подкачки и загрузочный раздел для конкретной архитектуры. На достаточно больших дисках также создается раздел /home.

  • ignoredisk: контролирует доступ установщика Anaconda к дискам, присоединенным к системе.

    ignoredisk --drives=sdc
  • bootloader: определяет, куда установить загрузчик.

    bootloader --location=mbr --boot-drive=sda
  • volgroup, logvol: создают группы томов и логические тома LVM.

    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: инициализирует диски, тип таблицы разделов которых не распознан.

Команды, связанные с сетью

Эти команды позволяют определить сетевые функции, используемые хостом.

  • network: настраивает информацию о сети для целевой системы. Активирует сетевые устройства в среде установщика.

    network --device=eth0 --bootproto=dhcp
  • firewall: определяет конфигурацию брандмауэра для целевой системы.

    firewall --enabled --service=ssh,http

Команды, связанные с местоположением и безопасностью

Эти команды позволяют настроить параметры, связанные с безопасностью, языком и регионами.

  • lang: задает язык, который будет использоваться во время установки, и язык по умолчанию для установленной системы. Обязательная команда.

    lang en_US.UTF-8
  • keyboard: задает тип клавиатуры системы. Обязательная команда.

    keyboard --vckeymap=us --xlayouts=''
  • timezone: задает часовой пояс, NTP-серверы и указывает, хранят ли аппаратные часы системы время в формате UTC.

    timezone --utc --ntpservers=time.example.com Europe/Amsterdam
  • authselect: задает параметры аутентификации. Опции, распознаваемые командой authselect, действительны для этой команды. См. man-страницу authselect(8).

  • rootpw: устанавливает первоначальный пароль root.

    rootpw --plaintext redhat
    or
    rootpw --iscrypted $6$KUnFfrTzO8jv.PiH$YlBbOtXBkWzoMuRfb0.SpbQ....XDR1UuchoMG1
  • selinux: задает режим SELinux для установленной системы.

    selinux --enforcing
  • services: изменяет стандартный набор служб, которые будут работать в цели systemd по умолчанию.

    services --disabled=network,iptables,ip6tables --enabled=NetworkManager,firewalld
  • group, user: создают локальных пользователей и локальные группы в целевой системе.

    group --name=admins --gid=10001
    user --name=jdoe --gecos="John Doe" --groups=admins --password=changeme --plaintext

Другие команды

Эти команды позволяют настроить различные аспекты, связанные с ведением журнала во время установки и состоянием питания хоста по завершении.

  • logging: определяет, каким образом Anaconda будет вести журнал во время установки.

    logging --host=loghost.example.com --level=info
  • firstboot: если этот параметр включен (enabled), агент установки запускается при первой загрузке системы. Должен быть установлен пакет initial-setup.

    firstboot --disabled
  • 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.

Пример файла Kickstart

Первая часть файла состоит из команд установки, таких как разбиение диска на разделы и источник установки.

#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 не указаны обязательные значения, установщик отобразит интерактивный запрос или установка будет полностью прекращена.

Шаги по установке с помощью Kickstart

Для автоматизации установки Red Hat Enterprise Linux выполните следующие действия.

  1. Создайте файл Kickstart.

  2. Опубликуйте файл Kickstart для установщика.

  3. Загрузите установщик Anaconda и укажите ему расположение файла Kickstart.

Создание файла Kickstart

Создать файл Kickstart можно одним из следующих способов:

  • с помощью веб-сайта Kickstart Generator;

  • с помощью текстового редактора.

На веб-сайте Kickstart Generator по адресу https://access.redhat.com/labs/kickstartconfig/ пользователь может указать нужные значения в диалоговых окнах, и на основе этих значений будет создан текстовый файл директив Kickstart. Каждое диалоговое окно соответствует настраиваемым элементам в установщике Anaconda.

Рисунок 12.3: Базовая конфигурация через Kickstart Generator

Примечание

На момент написания курса на веб-сайте Kickstart Generator не было варианта выбора Red Hat Enterprise Linux 8. Был доступен вариант Red Hat Enterprise Linux 8 Beta.

Создание файла Kickstart с нуля — это обычно довольно сложный процесс, а вот редактировать существующий файл Kickstart удобно и полезно. При каждой установке создается файл /root/anaconda-ks.cfg с директивами Kickstart, используемыми в ходе установки. Этот файл является хорошей отправной точкой при создании файла Kickstart вручную.

ksvalidator — это утилита, проверяющая файл Kickstart на наличие синтаксических ошибок. Она обеспечивает правильность ключевых слов и опций, но не проверяет URL-адреса, имена отдельных пакетов или групп, а также сценарии %post и %pre. Например, если директива firewall --disabled написана с ошибками, ksvalidator может выдать одно из следующих сообщений:

[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

Утилита ksvalidator содержится в пакете pykickstart.

Публикация файла Kickstart для установщика Anaconda

Сделайте файл Kickstart доступным для установщика, поместив его в одно из следующих мест:

  • сетевой сервер, доступный во время установки через FTP, HTTP или NFS;

  • доступный USB-диск или компакт-диск;

  • локальный жесткий диск в устанавливаемой системе.

У установщика должен быть доступ к файлу Kickstart, чтобы он мог начать автоматическую установку. В наиболее распространенном методе автоматизации используется сетевой сервер, например FTP-, веб- или NFS-сервер. Сетевые серверы упрощают обслуживание файла Kickstart, поскольку изменения достаточно внести один раз, а затем их можно использовать для будущих установок.

Также удобно предоставлять файлы Kickstart на USB- или компакт-диске. Файл Kickstart можно разместить на загрузочном носителе, используемом для запуска установки. Однако в случае изменения файла Kickstart необходимо будет создать новый установочный носитель.

Размещение файла Kickstart на локальном диске позволяет быстро переустановить систему.

Загрузка установщика Anaconda и указание файла Kickstart

После выбора метода публикации файла Kickstart необходимо указать установщику, где находится файл Kickstart, для чего необходимо передать параметр inst.ks=LOCATION ядру установки. Вот некоторые примеры:

  • inst.ks=http://server/dir/file

  • inst.ks=ftp://server/dir/file

  • inst.ks=nfs:server:/dir/file

  • inst.ks=hd:device:/dir/file

  • inst.ks=cdrom:device

Рисунок 12.4: Указание расположения файла Kickstart во время установки

При установке виртуальной машины с помощью Virtual Machine Manager или virt-manager можно указать URL-адрес файла Kickstart в разделе URL Options. При установке физической машины выполните загрузку с установочного носителя и нажмите клавишу Tab для прерывания процесса загрузки. Передайте параметр inst.ks=LOCATION ядру установки.