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

На этапе подготовки к установке необходимо:

  1. Определить MAC-адреса сетевых интерфейсов серверов (будет использовано в переменных установщика).

  2. Определить название целевого накопителя. (Как правило, это /dev/sda).

  3. При использовании RAID, тома должны быть сконфигурированы заранее и иметь от 200 до 500 Гб свободного пространства.

  4. Сконфигурировать в UEFI последовательность загрузки целевых серверов так, чтобы первой в списке была загрузка по сети.

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

Все серверы, на которые предполагается установка AIC, должны быть настроены на загрузку по сети. Во время установки потребуется перезагрузка серверов.

Предупреждение

Ранее установленные операционные системы и данные на этих серверах будут уничтожены.

Работа на bootstrap сервере на всем этом этапе осуществляется от пользователя root, либо с добавлением sudo к каждой команде.

Подготовка#

Скрипты подготовки сервера автоматической сетевой установки ОС#

Автоматизированная сетевая установка ОС состоит из следующих этапов:

  1. Настройка и запуск необходимых служб (производится скриптом):

  • dhcpd — обеспечивает настройку временной сети;

  • tftpd — предоставляет загрузчик и ядро;

  • vsftpd — файловый сервер для репозиториев и других файлов.

  1. Создание файлов, необходимых для установки (производится скриптом):

  • grub.cfg — меню загрузки, с возможностью выбора ОС для установки, в контексте установщика AIC используется единственная опция по умолчанию;

  • recipe — т.н. файл рецепта, позволяющий установщику ОС создать партиции на диске согласно заданным параметрам;

  • preseed — т.н. файл ответов, содержащий параметры установки ОС, которые в ручном режиме задавались бы пользователем;

  • postinst.sh — скрипт, исполняемый на финальном этапе установки.

  1. Перезапуск целевых серверов в режим загрузки по сети с последующей автоматической установкой ОС по сети (производится оператором/администратором).

Перед началом настройки нужно перейти в папку deploy_pxe_bash:

cd /home/astra/deploy_pxe_bash/

В папке находятся скрипты, облегчающие настройку сервера автоматической сетевой установки ОС.

Основные скрипты для настройки:

  • 01.deploy-services.sh — создает структуру каталогов, монтирует iso-образы, настраивает и запускает сервисы dhcpd, tftpd, vsftpd;

  • 02.render-preseeding.sh — параметризует и размещает файлы preseed, grub.cfg, recipe и скрипты в нужных каталогах.

Помимо основных, в папке находятся скрипты:

99.clean-up.sh — в зависимости от аргументов останавливает службы или удаляет результаты работы первых двух скриптов; 98.backup.sh — делает резервную копию сгенерированных конфигурационных файлов. Предполагается к использованию при обращении в службу технической поддержки.

Инициализация значений параметров#

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

# полный путь к файлу переменных vars
/home/astra/deploy_pxe_bash/vars

Обязательному изменению подлежат:

  • название сетевого интерфейса DHCP;

  • MAC-адреса целевых хостов;

  • имена целевых хостов;

  • размеры создаваемых при установке разделов диска.

Остальные переменные в файле vars могут быть оставлены по умолчанию.

Примечание

Количество целевых хостов — от 3 до 10. Конфигурации целевых хостов должны совпадать по именам устройств накопителей (/dev/sdX), куда устанавливается операционная система, по объему этих накопителей (допустим объем, превышающий тот, что будет указан в переменной размера корневой ФС) и по имени устройства сетевого интерфейса PXE.

Переменные файла vars#

IP-адрес для служб, обеспечивающих работу сетевой установки. Здесь представлен для информации, но именно этот адрес будет присвоен выбранному далее сетевому интерфейсу в качестве дополнительного адреса (alias):

PXESERVERIP=10.0.9.11
MIRRORIP=10.0.9.11

Примечание

Изменять IP-адрес этой временной сети рекомендуется только в том случае, если возникает наложение (конфликт) IP-адресов с существующими сетями. Сетевая коммуникация во время установки происходит в L2 домене и не использует маршрутизацию. Адресное пространство сети существует только в момент установки.

Имя сетевого интерфейса на bootstrap сервере, обслуживающий DHCP запросы, именно к нему добавлялся временный IP-адрес (alias):

DHCPINT='eth1'

Имена узлов виртуализации (значение hostname, которое будет установлено на конечных машинах) и MAC-адреса интерфейсов целевых серверов, которые выходят в выделенный VLAN (MAC-адреса записываются в файл /etc/dhcp/dhcpd.conf):

# target 1
TARGETMAC1=88:88:88:ee:ee:ee
TARGETHOSTNAME1=aichost1

# target 2
TARGETMAC2=88:88:88:ee:ee:ee
TARGETHOSTNAME2=aichost2

# target 3
TARGETMAC3=88:88:88:ee:ee:ee
TARGETHOSTNAME3=aichost3

Название интерфейса, в сети которого производится установка. Передается программе-установщику, указывается в файле grub.cfg. Рекомендуется оставить значение по умолчанию, требует изменения только в случае, если у программы-установщика возникли проблемы с получением сетевых настроек:

NETCFGIFACE=auto

Метод разбивки целевого диска: partitions или LVM. Рекомендуется изменять только в случае необходимости установки ОС на LVM тома:

METHODREG=1
METHODLVM=0

Во время разбивки диска на целевом сервере создаются разделы swap и / (root). Предполагаемые размеры этих разделов указываются в мегабайтах (значения указанного диапазона записываются в файл recipe для partman):

SWAPSIZE=8196
SWAPMAXSIZE=8196
ROOTSIZE=40000
ROOTMAXSIZE=50000

Имя пользователя и пароль для установки на целевой ОС:

USERNAME='aicadmin'
PASSWORD='astra-01'

Примечание

По умолчанию в процессе создания файла preseed скрипт заменит и в самом файле preseed, и в файле vars пароль, который задается открытым текстом, захешированным значением, полученным из вывода утилиты openssl passwd -6. При необходимости сменить задаваемый пароль нужно ввести новое значение открытым текстом и запустить скрипт еще раз. При повторном запуске скрипта без изменения значения пароля (при наличии захешированного) используется ранее заданное значение.

Название целевого диска для установки ОС. Рекомендуется оставить значение по умолчанию (записывается в файл preseed):

TARGETDISK=sda

Набор пакетов для установки, записывается в файл preseed. По умолчанию производится установка с графическим интерфейсом, но в закомментированном виде представлены примеры для установки без графической оболочки:

# без графической оболочки
BASEPACKAGES="Base"
PACKAGES="ssh htop ifenslave vlan bridge-utils parted bash-completion uuid-runtime open-iscsi astra-kvm"

# с графической оболочкой (рекомендуется)
BASEPACKAGES="Base, Fly, Fly-ssh, Fly-virtualization"
PACKAGES="ssh htop ifenslave vlan bridge-utils parted bash-completion xrdp firefox uuid-runtime"

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

Установка ОС по сети#

После редактирования параметров и расположения iso-образов в /iso, запустить скрипты:

sudo ./01.deploy-services.sh
sudo ./02.render-preseeding.sh

Ход исполнения каждого из скриптов журналируется, журнал записываются в директорию:

deploy_pxe_bash/logs/pxe_server_deploy.log

В логе можно найти, помимо прочего, пути к файлам, которые создаются в ходе исполнения.

После того, как установка ОС на хостах прошла успешно, требуется остановить сервисы PXE.

Запуск скрипта clean-up без параметров остановит службы dhcp, tftp, vsftp:

sudo ./99.clean-up.sh

Для полной очистки необходимо запустить скрипт 99.clean-up.sh с параметром cleanup, который удалит пакеты и конфигурационные файлы (при этом iso-образ удаляться не будет), удалит временный адрес с интерфейса:

sudo ./99.clean-up.sh cleanup

Настройка сети на целевых машинах#

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

Для конфигурирования сети используется пакет ifupdown, с основным файлом конфигурации /etc/network/interfaces.

На финальном этапе установки скрипт postinst.sh, исполняемый на сервере, попытается скачать предназначенный этому серверу файл interfaces, основываясь на своем MAC-адресе:

  • при отсутствии подготовленного файла interfaces, пост-скрипт генерирует файл interfaces исходя из интерфейса, активного на момент установки, прописывая получение адреса по DHCP. Таким образом администратору предоставляется сетевой доступ не только через BMC, но и через консоль;

  • при наличии же готовых файлов interfaces администратор может выложить эти файлы в папке скриптов /srv/ftp/scripts с названием вида: interfaces_<MAC-адрес>, где MAC-адрес — адрес сетевого интерфейса на соответствующем целевом хосте, где происходит установка. MAC-адрес должен быть прописан в нижнем регистре без разделителей. Например, целевой сервер А подключен к сети с PXE сервером интерфейсом с адресом 88:99:00:cc:bb:aa, а сервер Б — с адресом 88:99:00:cc:bb:bb. В этом случае файлы будут называться: interfaces_889900ccbbaa и interfaces_889900ccbbbb.

Примечание

Имена интерфейсов можно узнать, загрузившись в окружение с отключенным механизмом predictable names (убрав из параметров ядра net.ifnames=0).

Выкладываемые файлы должны быть корректными и не содержать ошибок. Пакеты ifenslave, vlan и bridge-utils для конфигурирования соединений типа bond, vlan и bridge указаны в файле preseed и устанавливаются автоматически.

Генерация SSH-ключа пользователя#

Для дальнейшего запуска Ansible плейбуков необходимо добавить SSH-ключи на все целевые серверы. Для добавления SSH-ключей на этапе установки ОС, в файле конфигурации необходимо оставить значение по умолчанию:

GENERATESSHKEY=1

Скрипт сгенерирует ключ и разместит его в директории файлового сервера, на финальном этапе установки публичная часть ключа будет записана в файл ~/.ssh/authorized_keys целевого пользователя, по умолчанию aicadmin.

Возможные ошибки#

Сервис DHCP возвращает ошибки при попытке запуска:

  • проверить, что сетевому интерфейсу имеющему выход в PXE сеть был назначен второй адрес 10.0.9.11/24;

  • проверить, что в файле с переменными было корректно определено значение переменной DHCPINT, в переменной должно быть указано имя сетевого интерфейса PXE сети с временно назначенным вторым адресом 10.0.9.11/24.

Целевой сервер не загружается в среду установки:

  • проверить, что в BIOS целевого сервера в разделе Boot для загрузки выбран корректный сетевой интерфейс, имеющий доступ к PXE сети (зависит от модели сервера);

  • во время загрузки посмотреть статус DHCP, где логируется событие выдачи IP-адреса;

  • проверить, что секции host в файле конфигурации DHCP (/etc/dhcp/dhcpd.conf) раскомментированы и заполнены верно;

  • проверить, что адрес сервера установки уникален в сети.

Целевой сервер загрузился в среду установки, но программа-установщик не получает настройки сети:

  • проверить, что секции host в файле конфигурации DHCP раскомментированы и заполнены верно;

  • посмотреть название сетевого интерфейса и указать его в меню GRUB в секции netcfg/choose_interface (файл /srv/tftp/debian-installer/amd64/grub/grub.cfg);

  • войти в shell (для запуска терминала нажать Alt+F2...F7) и проверить получение адреса командой udhcpc -i <имя_интерфейса>;

  • исключить нахождение других работающих DHCP серверов в той же сети.

Установщик выдает ошибку на этапе создания разделов жесткого диска:

  • убедиться в правильности указанных размеров партиций в файле /srv/ftp/recipes/recipe_regular;

  • убедиться в правильности указанного названия целевого диска в файле /srv/tftp/se/preseeds/preseed_1.7.4uu1_regular.cfg.

Целевой сервер загрузился в ОС после установки, но сеть осталась ненастроенной:

  • в общем случае настройка сети производится после установки и загрузки в новую ОС;

  • убедиться, что подготовленный файл interfaces назван корректно (interfaces_<MAC-адрес целевого сервера>) и был расположен в папке scripts до запуска скриптов и начала установки, назвав соответствующим образом

  • убедиться в отсутствии ошибок в файле interfaces;

  • убедиться, что пакеты vlan, bridge-utils и ifenslave были установлены (перечислены в preseed в числе других доп. пакетов).

После установки ОС#

После установки ОС на серверы необходимо выполнить следующие шаги:

  1. Настроить сетевые интерфейсы на физических серверах в соответствии с топологией сети, если этого еще не было сделано. Добавить сетевые мосты для 3 сетей (менеджмент сеть, сеть для трафика СРК, сеть для трафика СХД) на каждом из физических серверов. Сетевые мосты, относящиеся к одной сети, должны иметь одинаковые имена на всех серверах, например если мост менеджмент сети на первом сервере называется br200, то на втором и на третьем серверах он должен называться так же.

Пример готовой конфигурации сети в файле /etc/network/interfaces:

source /etc/network/interfaces.d/*

# --- networks in use:
# vlan 200 - management       : 192.168.22.0/24
# vlan 170 - iSCSI            : 10.205.17.0/24
# vlan 169 - backup           : 10.22.222.0/24

# -------------------------------------------------------------
auto lo
iface lo inet loopback

# bond0 lacp

auto eno1
iface eno1 inet manual

auto eno2
iface eno2 inet manual

auto bond0
iface bond0 inet manual
    mtu 9000
    bond-slaves eno1 eno2
    bond-mode 802.3ad
    bond-miimon 100
    bond-lacp-rate fast
    bond-xmit-hash-policy layer3+4
    bond-updelay 200
    bond-downdelay 200

# -------------------------------------------------------------
# vlan 200 - mgmt

auto bond0.200
iface bond0.200 inet manual
    vlan-raw-device bond0

auto br200
iface br200 inet static
    mtu 9000
    address 192.168.22.74/24
#    address 192.168.22.75/24
#    address 192.168.22.76/24
    bridge_ports bond0.200
    bridge_stp on

# -------------------------------------------------------------
# vlan 170 - iSCSI

auto bond0.170
iface bond0.170 inet manual
    vlan-raw-device bond0

auto br170
iface br170 inet static
    mtu 9000
    address 10.205.17.14/24
#    address 10.205.17.15/24
#    address 10.205.17.16/24
    bridge_ports bond0.170
    bridge_stp on

# -------------------------------------------------------------
# vlan 169 - backup

auto bond0.169
iface bond0.169 inet manual
    vlan-raw-device bond0

auto br169
iface br169 inet static
    address 10.22.22.14/24
#    address 10.22.22.15/24
#    address 10.22.22.16/24
    bridge_ports bond0.169
    bridge_stp on

Представленный пример конфигурационного файла подходит для 3 серверов, на каждом из которых нужно расскоментировать соответствующую строку с нужным адресом. В примере каждый VLAN подключается через агрегированные каналы связи (bonding) для повышения пропускной способности и надежности. Это не является обязательным условием, настройка сетевой части должна осуществляться для каждой инфраструктуры индивидуально, учитывая ее особенности.

  1. Убедиться в наличии беспарольного доступа к серверам по SSH с bootstrap сервера. Ключи создаются и добавляются на этапе установки ОС, но если это не было сделано, требуется сгенерировать ключи командой ssh-keygen и разместить ключи на каждом сервере командой ssh-copy-id. Обе команды запускаются на bootstrap сервере от имени пользователя astra.

  2. В файле /etc/hosts на bootstrap сервере нужно добавить записи обо всех физических серверах и узлах, которые предназначены для ресурсов ПК СВ «Брест» и ALD Pro. Записи должны включать в себя FQDN (это доменное имя будет использоваться при развертывании AIC).

Пример записей:

192.168.22.74 aichost1.aicstand.ru aichost1
192.168.22.75 aichost2.aicstand.ru aichost2
192.168.22.76 aichost2.aicstand.ru aichost3

192.168.22.233 node1-test.aicstand.ru node1-test
192.168.22.234 node2-test.aicstand.ru node2-test
192.168.22.235 node3-test.aicstand.ru node3-test

192.168.22.230 dc1-test.aicstand.ru dc1-test
192.168.22.231 dc2-test.aicstand.ru dc2-test

192.168.22.240 rubackup-server.aicstand.ru rubackup-server
192.168.22.241 monitoring.aicstand.ru monitoring
192.168.22.242 bill-manager.aicstand.ru bill-manager
192.168.22.243 dci-manager.aicstand.ru dci-manager
192.168.22.244 help.aicstand.ru help
192.168.22.245 marketplace.aicstand.ru marketplace

Пример сетевой конфигурации используемой в этой инструкции:

Основные 3 сети:

  • 192.168.22.0/24 (Менеджмент сеть, создан сетевой мост br200);

  • 10.22.22.0/24 (Сеть СРК, создан сетевой мост br169);

  • 10.205.17.0/24 (Сеть СХД, создан сетевой мост br170)

Адреса физических серверов:

  • 192.168.22.74;

  • 192.168.22.75;

  • 192.168.22.76.

Адреса узлов управления ПК СВ:

  • 192.168.22.233;

  • 192.168.22.234;

  • 192.168.22.235.

Адреса узлов Контроллер Домена:

  • 192.168.22.230;

  • 192.168.22.231.

Адрес портала iSCSI:

  • 10.205.17.90.

Адреса ВМ под управлением ПК СВ:

  • 192.168.22.240 (СРК RuBackup);

  • 192.168.22.241 (Astra Monitoring);

  • 192.168.22.242 (BILLmanager);

  • 192.168.22.243 (DCImanager);

  • 192.168.22.244 (Справочный центр);

  • 192.168.22.245 (Маркетплейс).

Физические серверы имеют выход во все три сети и оснащены сетевыми мостами для виртуальных машин. Виртуальные машины, представляющие фронт Брест, подключены ко всем трем сетям. Виртуальные машины, работающие как узлы контроллера домена, имеют доступ к сети менеджмента и сети СРК. Виртуальные машины под управлением Брест оснащены двумя сетевыми интерфейсами, предоставляющими доступ к сети менеджмента и сети СРК.

Предупреждение

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