Гид по технологиям

Автоматизация установки CentOS, Fedora и Red Hat с Kickstart

5 min read Системное администрирование Обновлено 26 Sep 2025
Kickstart: автоматизация установки CentOS и Fedora
Kickstart: автоматизация установки CentOS и Fedora

О чём эта статья

Здесь вы найдёте: краткое объяснение, как посмотреть автоматически сгенерированный kickstart после установки, один подробный пример файла Kickstart (с комментариями), разбор ключевых секций, рекомендации по безопасности и альтернативные подходы для автоматизации развёртывания Linux.

Короткое введение

Kickstart — это механизм автоматической установки семейства Red Hat (включая CentOS и Fedora). Он позволяет задать параметры инсталляции в файле и запускать развертывание без ручного вмешательства. После установки Anaconda сохраняет параметры в /root/anaconda-ks.cfg — откройте этот файл, чтобы видеть пример ваших прошлых выборов.

Важно: не используйте реальные пароли и учётные данные в общедоступных скриптах. Файл в примере содержит демонстрационные значения.

Как посмотреть существующий kickstart

  1. Установите любую систему Red Hat-подобную и после завершения установки выполните:
    • cat /root/anaconda-ks.cfg
  2. Проанализируйте опции — это самый быстрый способ понять, какие параметры и аргументы использует инсталлятор.

Пример файла Kickstart (включая %post)

Ниже — точный пример файла Kickstart, использованный автором при развёртывании Fedora-лэптопов с VMWare Player и готовыми образами виртуальных машин.

text
install
cdrom
lang en_US.UTF-8
keyboard uk
timezone --utc Europe/London
rootpw  --iscrypted $$nndedddewfooofcerd3r434
selinux --disabled
# Custom user added
user --name=kevinmitnick --groups=users --password=HackThePlanet
authconfig --enableshadow --passalgo=sha512 --enablefingerprint
firewall --service=ssh
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
clearpart --all --drives=sda
ignoredisk --only-use=sda
part /boot --fstype=ext2 --asprimary --size=500
part /OtherOS --fstype=ext4 --asprimary --size=10240
part swap --asprimary --size=2048
part pv.fedora1000 --grow --asprimary --size=500
volgroup fedora --pesize=32768 pv.fedora1000
logvol /centosVM --fstype=ext4 --name=centosVM --vgname=fedora --size=30720
logvol /home --fstype=ext4 --name=home --vgname=fedora --size=81920
logvol / --fstype=ext4 --name=root --vgname=fedora --size=25600
logvol /windowsVM --fstype=ext4 --name=windowsVM --vgname=fedora --size=40960
bootloader --location=mbr --driveorder=sda --append="nomodeset rhgb quiet"
# setup the network with DHCP
network --device=eth0 --bootproto=dhcp
# packages that will be installed, anything starting with an @ sign is a yum package group.
%packages
@admin-tools
@authoring-and-publishing
@base
@core
@development-libs
@development-tools
@dial-up
@editors
@education
@electronic-lab
@engineering-and-scientific
@eclipse
@fedora-packager
@fonts
@gnome-desktop
@gnome-software-development
@graphical-internet
@graphics
@hardware-support
@input-methods
@java
@java-development
@kde-desktop
@kde-software-development
@legacy-fonts
@office
@online-docs
@printing
@sound-and-video
@system-tools
@text-internet
@x-software-development
@base-x
kpackagekit
system-config-network
scribus
xfsprogs
mtools
gpgme
gpm
rpmdevtools
koji
mercurial
lua
pylint
rpmlint
plague-client
cmake
mock
bzr
pptp
kdeedu-marble
minicom
opencv
yum-priorities
plotutils
openoffice.org-opensymbol-fonts
qtcurve-gtk2
gvfs-obexftp
glibmm24-devel
gnome-vfs2-devel
libsigc++20-devel
libart_lgpl-devel
kdepim
konversation
ImageMagick
digikam
kipi-plugins
kdegraphics
gypsy
gpsd
hdparm
m17n-db-tamil
m17n-db-gujarati
m17n-db-kannada
m17n-db-hindi
gok
m17n-db-oriya
m17n-db-bengali
m17n-contrib-sinhala
m17n-db-assamese
m17n-db-punjabi
iok
m17n-db-telugu
m17n-db-malayalam
xorg-x11-fonts-ISO8859-1-100dpi
urw-fonts
ghostscript-fonts
kdepim
vorbis-tools
amarok
jack-audio-connection-kit
kaffeine
kdemultimedia
vbetool
gssdp
geoclue
createrepo
radeontool
PackageKit-command-not-found
obexftp
enca
festival
ntpdate
xsel
gupnp
rdesktop
fuse
ncftp
mesa-libGLU-devel
xorg-x11-apps
xscreensaver-gl-extras
gdm
xscreensaver-extras
xscreensaver-base
xterm
xorg-x11-resutils
gitk
git-gui
dia
tftp
python-crypto
boost-devel
valgrind
subversion
cvs
thunderbird-lightning
python-sqlite2
asciidoc
glibc-static
tcllib
python-psycopg*
ssh*
perl-ExtUtils-MakeMaker
perl-Net-Telnet
perl-HTML-FromText
libICE.so.6
libSM.so.6
libXmu.so.6
libXp.so.6
libXpm.so.4
libXt.so.6
help2man
cscope
ctags
git
kernel-devel
tftp-server
texlive-latex
texi2html
cmake
transfig
alsa-lib
libXScrnSaver
qt
qt-x11
libasound.so.2

libXss.so.1
libQtDBus.so.4
libQtGui.so.4
pulseaudio
alsa-plugins-pulseaudio
pulseaudio-esound-compat
pulseaudio-libs
pulseaudio-libs-glib2
pulseaudio-module-zeroconf
pulseaudio-libs-zeroconf
xmms-pulse
pulseaudio-module-gconf
wine-pulseaudio
xine-lib-pulseaudio
pulseaudio-utils
pulseaudio-module-bluetooth
padevchooser
paman
paprefs
pavucontrol
pavumeter
ncurses-devel.i686
%end
%post --log=/root/my-post-log
exec < /dev/tty3 > /dev/tty3
chvt 3
echo
echo "################################"
echo "# Running Post Configuration   #"
echo "################################"
# prevent future yum updates pulling down & install new kernels (and breaking VMware & video drivers).
echo "exclude=kernel*" >> /etc/yum.conf
# update the system
yum update -y 
# install rpm fusion repo
rpm -Uvh \
http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm \
http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm
# disable rpmfusion repo, to prevent a yum update contaminating the system with rpmfusion rpms.
sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/rpmfusion-*
# install video drivers - enabling rpmfusion repos on the command line.
yum -y --enablerepo=rpmfusion-nonfree --enablerepo=rpmfusion-free  --enablerepo=rpmfusion-free-updates --enablerepo=rpmfusion-nonfree-updates install kmod-nvidia xorg-x11-drv-nvidia-libs.i686 xorg-x11-drv-nvidia-libs.x86_64 akmod-nvidia
# start akmods on boot
chkconfig akmods on
# add pcadmin to sudoers
echo "kevinmitnick ALL=(ALL)       ALL" >> /etc/sudoers
# set perms on vmware partitions so users in the users group can create vm's
chown :users /windowsVM && chmod 775 /windowsVM
chown :users /centosVM && chmod 775 /centosVM
# Make sure the system boots X by setting the system to run level 5
sed -i 's/id:3:initdefault:/id:5:initdefault:/g' /etc/inittab
# install openvpn & configure
wget ftp://$host/pub/VPN/OpenVPN/Linux/openvpnclient-custom-settings-1.6-3.i386.rpm
rpm -ivh openvpnclient-custom-settings-1.6-3.i386.rpm
cd /etc/openvpn/
rm client.conf-*
wget ftp://$host/pub/VPN/OpenVPN/Linux/64bit/client.conf-1
mv client.conf-1 client.conf-0
rm -f /openvpnclient-custom-settings-1.6-3.i386.rpm
# add Kevin Mitnick to group users
usermod -a -G users kevinmitnick
# pull down vmware images
cd /windowsVM/
wget --user=magicinstaller --password=hacktheplanet ftp://magicinstaller:fubar@ftp.$host.com/images/windowsVM.tar.gz
tar -xvzf windowsVM.tar.gz
cd /centosVM/
wget --user=magicinstaller --password=hacktheplanet ftp://magicinstaller:fubar@ftp.$host.com/images/centosVM.tar.gz
tar -xvzf centosVM.tar.gz
# create symlink as instructed
cd /usr/lib; ln -s libtinfo.so libtermcap.so.2
# confirm perms are set correctly
chown -R :users /windowsVM && chmod -R 775 /windowsVM
chown -R :users /centosVM && chmod -R 775 /centosVM
# swap to console 1
chvt 1

Разбор ключевых секций файла

  • Параметры установки: text, install, cdrom — указывают тип установки.
  • Языковые/клавиатурные и временные параметры: lang, keyboard, timezone.
  • Пользователи и аутентификация: rootpw, user, authconfig — здесь задаются пароли и тип хэширования.
  • Разметка диска: clearpart, ignoredisk, part, volgroup, logvol — задают LVM и разделы.
  • Пакеты: секция %packages — перечислены группы и пакеты, которые будут установлены.
  • Пост-скрипты: %post — выполняются после установки и позволяют выполнить любые настройки и инсталляцию ПО.

%post: что и почему включено

В примере %post используется для:

  • Отключения обновления ядра через yum (чтобы избежать несовместимости с драйверами).
  • Установки внешних репозиториев и драйверов (rpmfusion, NVIDIA).
  • Настройки sudoers и прав на каталоги с VM-образами.
  • Загрузки и распаковки готовых VM-образов через wget+tar.

Совет: в %post лучше использовать проверку наличия сети и логирование (/root/my-post-log). Если команда может вывести данные в консоль, перенаправляйте вывод в лог.

Безопасность и приватность

Важно:

  • Никогда не храните реальные пароли в открытом виде в файлах Kickstart. Используйте зашифрованные пароли (–iscrypted) или генерацию пароля в %post.
  • Не храните конфиденциальные ключи в репозиториях. Вставляйте секреты через защищённые каналы (Vault, SSH-агент, защищённый FTP) в момент развёртывания.
  • Отключённый SELinux (selinux –disabled) уменьшает защиту системы; обдумайте включение и настройку политик вместо полного выключения.

Когда Kickstart не подходит (контрпример)

  • Если нужно быстро клонировать точную конфигурацию вместе с настроенными драйверами и уникальными аппаратными настройками — иногда проще использовать image-based решения (например, Ghost, Clonezilla), особенно для Windows.
  • Когда требуется оркестрация конфигурации после инсталляции на множество хостов с разными ролями — лучше применять инструменты конфигурации (Ansible, Puppet) поверх базовой установки Kickstart.

Альтернативные подходы и сочетания

  • PXE + Kickstart: позволяет полностью бездисковую автоматизацию развёртывания нескольких машин по сети.
  • Image-based (Ghost, Clonezilla): быстрый разворот на одинаковый хардвер, но меньше гибкости.
  • Ansible/Puppet/Chef после установки: применяйте Kickstart для базовой установки, затем инструмент конфигурации для приведения системы к желаемому состоянию.

Мини-методология: как подготовить свой Kickstart (шаги)

  1. Установите систему вручную и сохраните /root/anaconda-ks.cfg как шаблон.
  2. Уберите из шаблона всё специфичное (пароли, уникальные UUID, MAC-адреса).
  3. Разбейте варианты по ролям (desktop, server, vm-host) и создайте отдельные файлы.
  4. В %post добавляйте только то, что не может быть сделано пакетным менеджером.
  5. Тестируйте в VM, затем в контролируемой среде на 1‑2 физических машинах.

Роль‑ориентированный чек-лист перед запуском

  • Системный администратор:
    • Проверить разделы и LVM-политику.
    • Убедиться, что репозитории доступны.
    • Логирование в %post включено.
  • DevOps/ретейнер:
    • Добавить интеграцию с системой конфигурации (Ansible playbooks).
    • Проверить автоматическое обновление пакетов и исключения.
  • Helpdesk/помощь пользователю:
    • Проверить создание учётных записей пользователей.
    • Убедиться, что драйверы для целевого хардвера корректно устанавливаются.

Шаблон краткого плана тестирования

  • Тест 1: Установка из CD/DVD/ISO в VM — проверка, что %packages устанавливаются.
  • Тест 2: Проверка %post — все команды возвращают код 0, лог содержит ожидаемые шаги.
  • Тест 3: Перезагрузка и проверка целевых сервисов (X, SSH, сетевые настройки).
  • Тест 4: Проверка безопасности — SELinux, sudoers, права на каталоги.

Краткий глоссарий (1 строка)

  • Kickstart: файл, описывающий автоматическую установку Red Hat-подобных систем.
  • %post: секция kickstart для команд, выполняемых после основной установки.
  • anaconda-ks.cfg: автоматически сгенерированный Anaconda kickstart-файл после установки.

Итог и рекомендации

Использование Kickstart даёт сильную гибкость: одна конфигурация может применяться к множеству аппаратных платформ при условии корректной разметки и скриптов в %post. Для масштабируемого и воспроизводимого развёртывания комбинируйте Kickstart для базовой инсталляции и Ansible (или аналог) для финальной настройки и управления секретами.

Важно: всегда тестируйте шаблоны на виртуальных машинах перед применением в производственной среде.

Короткая сводка:

  • Посмотрите /root/anaconda-ks.cfg, чтобы получить рабочий шаблон.
  • Разделяйте конфигурацию по ролям и избегайте жестко закодированных секретов.
  • Используйте %post ответственно и логируйте действия.

Если у вас есть вопросы или нужен разбор вашего файла kickstart — оставьте комментарий, и автор вернётся с ответом. Источник примера: www.netzensolutions.com.

Ключевые заметки

Важно: если в процессе установки требуется принять лицензионное соглашение (например, VMWare), автоматизировать это может быть невозможно без лицензионных обходов — такие шаги должны выполняться вручную или с использованием официальных средств автоматизации от вендора.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Удаление истории Facebook — полное руководство
Приватность

Удаление истории Facebook — полное руководство

Как скачать видео JW Player — руководство
Руководство

Как скачать видео JW Player — руководство

Как настроить «вне офиса» в Microsoft Teams
Microsoft Teams

Как настроить «вне офиса» в Microsoft Teams

Как прочитать удалённые сообщения WhatsApp
WhatsApp

Как прочитать удалённые сообщения WhatsApp

Как восстановить удалённые фото из iCloud
iCloud фото

Как восстановить удалённые фото из iCloud

Kickstart: автоматизация установки CentOS и Fedora
Системное администрирование

Kickstart: автоматизация установки CentOS и Fedora