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

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

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

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

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

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

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

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

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

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

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

Подготовка#

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

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

cd /home/astra/deploy_pxe_bash/

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

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

  • 00.pre-download.sh — скачивает iso-образы и разместит их в директории /iso. Использование этого скрипта опционально, только для инсталляций с доступом в Интернет. Для оффлайн установок нужный iso-образ уже находится в папке /iso;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • TARGETMAC<N> — MAC-адреса целевых хостов;

  • TARGETHOSTNAME<N> — имена целевых хостов;

  • SWAPSIZE, SWAPMAXSIZE, ROOTSIZE, ROOTMAXSIZE — размеры создаваемых при установке партиций.

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

Переменные файла 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):

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

После отработки скриптов проверить наличие файлов:

  • /srv/tftp/debian-installer/amd64/grub/grub.cfg;

  • /srv/tftp/se/preseeds/preseed_1.7.4uu1_regular.cfg;

  • /srv/ftp/recipes/recipe_regular;

  • /srv/ftp/scripts/postinst.sh.

А также убедиться, что iso-образ ALSE 1.7.4uu1 примонтирован:

mount | grep iso

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

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

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

sudo ./99.clean-up.sh

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

sudo ./99.clean-up.sh purge

Конфигурирование сети#

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

Для конфигурирования сети используется пакет 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;

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

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

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

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

  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

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

Основные 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).

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