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

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

Сразу по делу. Если хочешь сократить развёртывание до минуты – используй конфигурационный файл ks.cfg. Не GUI, не ручной ввод параметров. Только текст. Только контроль. Только стабильность.

Сценарий должен лежать либо локально, либо на HTTP(S)/FTP/NFS. Пример строк запуска через PXE:

linux inst.ks=http://192.168.0.10/ks.cfg

Или с флешки:

linux inst.ks=hd:LABEL=INSTALL:/ks.cfg

Нюанс: в Red OS секция %packages обязательна. Без неё получишь полупустую систему, даже без shell’а. Убедись, что указал нужные группы, например:


%packages
@core
chrony
vim
%end

Помни: некоторые пакеты могут конфликтовать с системными службами по умолчанию. Проверяй зависимости руками, особенно при использовании --excludedocs или --nobase.

Важно! В Red OS не работают некоторые опции, привычные по CentOS. Например, langsupport игнорируется – только lang.

Идём дальше. Секция %post – это ад. С ней всё может пойти не так. Скрипты выполняются в chroot. Если нужны внешние команды – используй:

%post --interpreter /bin/bash --nochroot

Но будь осторожен – пути к бинарникам будут другие. Не забудь монтировать вручную нужные директории.

Сеть? Только через network --bootproto. DHCP, статический адрес, DNS – всё прописывай заранее. Иначе получишь машину без связи.


network --device=eth0 --bootproto=static --ip=192.168.1.100 --netmask=255.255.255.0 --gateway=192.168.1.1 --nameserver=8.8.8.8

Внимание! Если используешь LVM – проверь, как именуются тома. Red OS иногда по-своему переименовывает Volume Group в процессе.

Финал. Всё это не просто конфигурация. Это сценарий. Скрипт, который должен отрабатывать без единой ошибки. Минимум интерактива, максимум контроля.

Хочешь стабильный результат – тестируй каждый флаг, каждую строку. И никогда не копируй чужие примеры без разбора.

Подготовка конфигурационного файла Kickstart для Red OS

Первая строка – ключевая:

Читайте также:  Canon i-SENSYS MF4550D - как скачать драйвер для Ред ОС

install

Это не обсуждается. Используй только url или nfs для источника. Пример:

url --url=http://192.168.1.10/repo/BaseOS

Прокси? Забудь. Лишняя точка отказа.

Язык и клавиатура:


lang ru_RU.UTF-8
keyboard --vckeymap=ru --xlayouts='ru'

Настройка дисков: здесь чаще всего всё ломается. Используй clearpart и autopart с умом:


clearpart --all --initlabel
autopart --type=lvm

Или будь жестче. Разметка вручную – путь к стабильности:


part /boot --fstype="xfs" --size=1024
part pv.01 --size=1 --grow
volgroup VolGroup00 pv.01
logvol / --vgname=VolGroup00 --size=8192 --name=LogVol00 --fstype="xfs"

Сеть? Укажи жестко:


network --bootproto=static --ip=192.168.1.20 --netmask=255.255.255.0 --gateway=192.168.1.1 --device=eth0 --hostname=server01.local

Без rootpw ничего не сдвинется. Шифруй:

rootpw --iscrypted $6$abcd1234$uT67abcdeX.../

Важно: Никогда не оставляй rootpw в открытом виде. Хешируй заранее: openssl passwd -6

Часовой пояс:

timezone Europe/Moscow --isUtc

Службы? Включай только то, что нужно. Отключи лишнее:


services --enabled=sshd,chronyd --disabled=NetworkManager

Раздел пакетов – зона риска. Укажи только нужные группы. Пример:


%packages
@^minimal-environment
bash-completion
net-tools
%end

Скрипты после установки – палочка-выручалочка. Расставь приоритеты:


%post --log=/var/log/ks-post.log
echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
systemctl enable sshd
%end

Внимание! %post – место, где можно угробить всё. Проверяй каждую строку дважды.

Проверка конфига? Запускай: ksvalidator /root/ks.cfg. Не пропускай ошибки. Валидация – твой щит.

Вот и всё. Дальше – только проверка в бою. Либо работает, либо перезаписывай и снова катай образ.

Организация сетевой установки Red OS через PXE-сервер

Запусти TFTP и DHCP на одной машине. Не усложняй. Не разбивай на два хоста без крайней необходимости. Используй dnsmasq. Настройка минимальна, но коварна.

Вот базовый конфиг для /etc/dnsmasq.conf:


port=0
interface=eth0
bind-interfaces
dhcp-range=192.168.1.100,192.168.1.200,12h
enable-tftp
tftp-root=/var/lib/tftpboot
dhcp-boot=pxelinux.0

Не забудь про SELinux. TFTP с ним дружит не всегда. Проверь:

Читайте также:  Как удалить историю коммитов из репозитория на GitHub


setsebool -P tftp_home_dir=1
restorecon -R /var/lib/tftpboot

Залей pxelinux.0 и сопутствующее из пакета syslinux. Каталог /var/lib/tftpboot/pxelinux.cfg обязателен. Без него – черный экран.

Пример файла default внутри pxelinux.cfg:


DEFAULT menu
PROMPT 0
TIMEOUT 100
ONTIMEOUT linux

LABEL linux
MENU LABEL Установка RedOS по сети
KERNEL vmlinuz
APPEND initrd=initrd.img inst.ks=http://192.168.1.1/ks.cfg inst.repo=http://192.168.1.1/os

Важно указать inst.ks и inst.repo. Без этих параметров ядро не найдет ни скрипт настройки, ни источник образа. Бессмысленная загрузка. Пустой экран. Потерянное время.

HTTP-сервер – обычный Apache или nginx. Без фантазий. Распакуй ISO в директорию, скажем, /var/www/html/os. Проверь, чтобы vmlinuz и initrd.img были в корне TFTP. Их ищет BIOS. Там не прощают вложенных директорий.

Важно! Не полагайся на UEFI, если BIOS-машины в инфраструктуре еще дышат. Заставят пересобирать всё по-другому.

Проверка? Подними виртуалку без диска. Задействуй сетевую карту с поддержкой PXE. Посмотри, идет ли загрузка. Если нет – ищи ошибки в логах dnsmasq или попробуй tcpdump -i eth0 port 69. Молчит? Значит, TFTP не работает. Говорит, но нет ответа? Возможно, DHCP не отдает правильный путь.

Подводные камни: MTU. Jumbo-фреймы и PXE – несовместимы. VLAN? Не каждая сетевая карта передает тег корректно на этапе инициализации. Проверяй железо.

Помните! Даже одна опечатка в имени файла или пути – и вы погружаетесь в болото бесконечного PXE-загрузочного экрана.

Если всё сделано правильно – установка стартует сама. Без вопросов. Без взаимодействия. Просто работает. Или не работает – тогда читай логи и заново пересматривай конфигурацию. PXE не прощает невнимательности.

Проверка и отладка автоматической установки Red OS

Отказ по сети? Значит, не подтянулся NetworkManager или неверно указан интерфейс. Проверь ip a внутри chroot, если система вообще загрузилась. Часто забывают добавить DEVICE=eth0 и ONBOOT=yes в шаблон ifcfg-*. Без этого – мимо.

Грузится не тот загрузчик? Проверь bootloader в конфиге: location=mbr или location=partition. Для UEFI нужна отдельная /boot/efi, форматировать в FAT32, метка – ESP. Иначе не взлетит.

Застревание на этапе установки пакетов? Это часто указывает на битый образ ISO, некорректный путь до репозитория (url --url=) или отсутствие DNS. Проверь доступность сервера через curl или wget из временной консоли Ctrl+Alt+F2. Обрати внимание: даже если диск монтируется – это не значит, что всё ок. Репозиторий может не содержать базовые группы.

Важно помнить: если в логах нет явной ошибки, это не значит, что её нет. Ищи косвенные признаки – зависания, тайм-ауты, повторы операций.

Проблемы с разделами? Используй parted и lsblk. Если ты указал ручную схему, проверь, созданы ли нужные точки монтирования. Особенно следи за --fstype=xfs и метками томов. Мало прописать mountpoint, нужно ещё и указать --size= и --onpart= если диск нестандартный.

Нет root-пароля после установки? Проверяй строку rootpw в ks-файле. Забыл --iscrypted? Всё, привет, без доступа. Генерируй заранее через openssl passwd -6.

Скрипты в %post? Не сработали? Наверняка забыта директива --interpreter. По умолчанию используется /bin/sh, а многие команды требуют bash. Лови ошибки через %post --log=/mnt/sysimage/root/post.log.

Внимание! Всегда проверяй права на директории и наличие SELinux-контекста, особенно если используешь chroot в %post или %pre. Контекст может всё сломать.

Совет: Используй virt-manager или virt-install для тестирования без реального железа. Указывай виртуальный CD-ROM, PXE или NFS, прогоняй конфиг десятки раз. Только так ты выловишь нюансы.

И последнее: создавай checksum-файл и сверяй его на каждой итерации. Даже один лишний байт – и у тебя не тот результат. Паранойя? Нет. Практика.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *