Установка ОС на физические серверы#
На этапе подготовки к установке необходимо:
Определить MAC-адреса сетевых интерфейсов серверов (будет использовано в переменных установщика).
Определить название целевого накопителя. (Как правило, это
/dev/sda
).При использовании RAID, тома должны быть сконфигурированы заранее и иметь от 200 до 500 Гб свободного пространства.
Сконфигурировать в 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
и скрипты в нужных каталогах.
Автоматизированная сетевая установка ОС состоит из этапов:
Настройка и запуск необходимых служб (производится скриптом
01.deploy-services.sh
):dhcpd
— обеспечивает настройку временной сети;tftpd
— предоставляет загрузчик и ядро;vsftpd
— файловый сервер для репозиториев и других файлов.
Создание файлов, необходимых для установки (производится скриптом
02.render-preseeding.sh
):grub.cfg
— меню загрузки, с возможностью выбора ОС для установки, в данном случае — опция по умолчанию;recipe
— файл рецепта, позволяющий установщику создать партиции на диске согласно заданным параметрам;preseed
— файл ответов, содержащий параметры установки, которые в ручном режиме задавались бы пользователем;postinst.sh
— скрипт, исполняемый на финальном этапе установки.
Перезапуск целевых серверов в режим загрузки по сети с последующей автоматической установкой ОС по сети (производится администратором).
Инициализация значений параметров#
Перед запуском процесса установки необходимо задать значения переменных в файле 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
до запуска скриптов и начала установки, назвав соответствующим образом: ;
После установки ОС#
После установки ОС на серверы необходимо выполнить следующие шаги:
Настроить сетевые интерфейсы на физических серверах в соответствии с топологией сети, если этого еще не было сделано. Добавить сетевые мосты для 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) для повышения пропускной способности и надежности. Это не является обязательным условием, настройка сетевой части должна осуществляться для каждой инфраструктуры индивидуально, учитывая ее особенности.
Убедиться в наличии беспарольного доступа к серверам по SSH с bootstrap сервера. Ключи создаются и добавляются на этапе установки ОС, но если это не было сделано, требуется сгенерировать ключи командой
ssh-keygen
и разместить ключи на каждом сервере командойssh-copy-id
. Обе команды запускаются на bootstrap сервере от имени пользователяastra
.В файле
/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).
Физические серверы имеют выход во все три сети и оснащены сетевыми мостами для виртуальных машин. Виртуальные машины, представляющие фронт Брест, подключены ко всем трем сетям. Виртуальные машины, работающие как узлы контроллера домена, имеют доступ к сети менеджмента и сети СРК. Виртуальные машины под управлением Брест оснащены двумя сетевыми интерфейсами, предоставляющими доступ к сети менеджмента и сети СРК.