3. Установка ОС на физические серверы#

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

Если диски подключены к серверам непосредственно, то, скорее всего, они подключены через RAID-контроллер. Выбор конфигурации RAID-массива остается на усмотрение администратора.

Рекомендуемый конечный объем тома, выделяемого под ОС — от 200 до 500 ГБ, в зависимости от потребностей. В случае, если диски являются лунами СХД и приходят по FibreChannel (FC), установка возможна по одному из путей с последующей установкой и настройкой multipathd на установленной ОС. Размер выделяемого луна будет находиться в том же диапазоне.

Помимо конфигурации накопителей, необходимо также предварительно выяснить MAC-адреса сетевых интерфейсов, подключенных к сети для автоматической сетевой установки ОС. Как правило, в интерфейсе BMC можно найти MAC-адреса, но альтернативным способом получить информацию о сетевых интерфейсах и накопителях является загрузка из live-образа.

При установке по сети настоятельно рекомендуется использовать режим загрузки UEFI. Если firmware сервера предоставляет выбор между загрузкой по PXE или iPXE — необходимо использовать первую.

3.1. Последовательность установки#

Предполагается, что на bootstrap сервере уже установлены и настроены все компоненты PXE, поэтому для сетевой автоматической установки ОС достаточно:

  • записать MAC-адреса сетевых интерфейсов серверов в файл /etc/dhcp/dhcpd.conf в секцию fixed address;

  • отредактировать размеры в файле recipe, указав желаемый и максимальный размеры root и swap партиций;

  • указать идентификатор целевого диска в файле preseed (например, /dev/sda);

  • просмотреть файл ответов preseed и postinst скрипт, внеся изменения, если таковые потребуются;

  • перезапустить целевые серверы, выбрать сетевую загрузку в режиме UEFI;

  • на каждом сервере выбрать необходимую опцию в появившемся меню GRUB, запустив тем самым процесс установки ОС.

Более подробно процесс настройки описан ниже.

3.2. Подробное описание настройки компонентов PXE#

3.2.1. Подготовка к сетевой установке ОС#

Структра файлов и каталогов PXE сервера представлена на схеме:

../../_images/struct_files_directories_pxe_server.png

Подготовка к автоматической сетевой установке ОС заключается во внесении изменений в конфигурационные файлы:

  • dhcpd;

  • recipe;

  • preseed.cfg;

  • postinst.sh.

3.2.2. Настройка DHCP#

Для работы сетевой установки используется сеть 10.0.9.0/24. L3 адресация не имеет существенного значения, так как сеть существует только в момент процесса установки и до момента завершения настройки сети на установленной ОС. Однако, если менять IP адресацию, необходимо поменять ее во всех конфигурационных файлах. MAC-адреса интерфейсов серверов необходимо записать в файл:

/etc/dhcp/dhcpd.conf

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

Cекцию host раскомментировать и записать нужный MAC-адрес в паре с IP-адресом:

host client1 { hardware ethernet 8e:e8:8e:e8:8e:e8; fixed-address 10.0.9.21; }

Количество секций host будет равно количеству целевых машин.

3.2.3. Настройка recipe#

Файлы recipe используются утилитой partman для разбивки целевого диска на партиции в начале процесса установки.

Файлы для методов lvm и regular различаются, но между версиями ОС различий нет, поэтому для множества версий в общем случае достаточно двух файлов recipe.

Выставить лимиты (limits). Три числа означают следующее, слева направо: <minimal size>_<priority>_<maximal size>_<parted fs>.

Рекомендации по выбору значений priority:

  1. Для небольших партиций (около 1 ГБ) выставлять равным или большим максимального значения.

  2. Для остальных случаев — выбирать между минимальным и максимальным числами.

3.2.4. Формирование файла ответов preseed.cfg#

Актуализировать значения preseed.cfg:

# адрес FTP-репозитория
d-i mirror/ftp/hostname string
d-i mirror/ftp/directory string

# ссылка на файл recipe с адресом сервера, где располагаются скрипты (совпадает с адресами DHCP/PXE/TFTP/FTP):
d-i partman/early_command string wget -O /tmp/recipe_regular
ftp://<ip>/recipes/recipe_regular

# выбор между наличием или отсутствием графической оболочки, установка средств виртуализации:
#tasksel tasksel/first multiselect Base
#tasksel tasksel/first multiselect Base, Fly, Fly-ssh
# рекомендуемое значение:
tasksel tasksel/first multiselect Base, Fly, Fly-ssh,
Fly-virtualization

# установка дополнительных пакетов, представленный список предлагается дополнить нужными, список разделяется пробелами:
d-i pkgsel/include string ssh htop ifenslave vlan bridge-utils parted
firefox

# (для LVM) выбрать, какой процент от свободного пространства диска отдать под системную volume группу, рекомендуется выставить max:
d-i partman-auto-lvm/guided_size string 80%
d-i partman-auto-lvm/guided_size string max

# Целевой диск для установки ОС:
d-i partman-auto/disk string /dev/sda

# Имя пользователя:
d-i passwd/username string aicadmin

# Пароль:
d-i passwd/user-password password astra-01

d-i passwd/user-password-again password astra-01

Файлы ответов для версий 1.7.2 и 1.7.4 идентичны.

3.2.5. Postinstall скрипт#

Скрипт postinst.sh скачивается на целевой сервер на финальном этапе установки и исполняется последним. Пример скрипта:

#!/bin/sh
MIRROR=10.0.9.11
IFACES=interfaces_ph_v1

# remove net.ifnames, update grub
sed -i 's/net.ifnames=0//g' /target/etc/default/grub
in-target update-grub
in-target systemctl enable ssh.service
in-target systemctl disable NetworkManager
in-target systemctl mask NetworkManager
in-target systemctl disable firewalld
in-target systemctl mask firewalld
in-target systemctl enable networking.service

in-target usermod -aG kvm,libvirt,libvirt-qemu,libvirt-admin root
in-target usermod -aG kvm,libvirt,libvirt-qemu,libvirt-admin aicadmin

# update interfaces
wget -O /tmp/interfaces ftp://${MIRROR}/scripts/${IFACES}
cat /tmp/interfaces > /target/etc/network/interfaces

Примечание

Пример не является исчерпывающим, скрипт доступен для любых правок, но пункт с net.ifnames=0 является настоятельной рекомендацией.

Файл настройки интерфейсов interfaces_ph_1 содержит условные данные, необходимо внести изменения в этот файл в соответствии с конфигурацией сети в которой происходит развертывание.

Скрипт должен быть простым, насколько это возможно, исполнять избыточно комплексные скрипты на финальном этапе установки настоятельно не рекомендуется.

3.2.6. Запуск сетевой установки#

Для запуска сетевой установки необходимо на начальном этапе загрузки сервера выбрать сетевую загрузку с соответствующего сетевого интерфейса (PXE IPv4). Если конфигурация выполнена верно, интерфейс получит IP-адрес и загрузит меню GRUB (в случае UEFI) или меню Legacy (в случае BIOS). Далее следует выбрать нужный пункт сетевой установки и дождаться ее завершения. Порядок загрузки будет изменен установщиком автоматически.

Примечание

После установки ОС необходимо донастроить сетевые интерфейсы на физических серверах, в зависимости от топологии сети. Также необходимо удалить все записи из файла /etc/resolv.conf и поменять имена хостов на aichostN, где N — порядковый номер физического сервера.