Установка по сети
Установка по сети включает следующие шаги:
-
Выполните настройку BIOS(UEFI) на устройстве, включив режим PXE и определив приоритеты загрузки следующим образом:
-
Системный диск.
-
PXE.
Такой порядок позволяет выполнять поиск установщика ОС на системном диске и, при его отсутствии, запускать поиск загрузчика через PXE.
-
-
Подготовьте инфраструктуру для хранения и получения начального загрузчика iPXE. Для этого на сервере, на котором установлен бэкенд продукта, выполните настройку:
-
DHCP-сервера — отвечает за распределение и управление доступными IP-адресами и другими сетевыми параметрами, а также предоставляет пользовательскую конфигурацию сети.
-
(Альтернативный шаг) DHCP-Proxy — используется, если на стороне заказчика по какой-либо причине невозможно внесение изменений в настройки DHCP-сервера. В этом случае необходимо развернуть DHCP-proxy (при его отсутствии) и вносить изменения в его конфигурацию.
Ниже приведены примеры конфигурации DHCP-сервера и DHCP-Proxy. В конфигурации предусмотрены условия для архитектур BIOS и UEFI. Для каждой архитектуры указываются свои файлы загрузчиков, которые будут загружаться через TFTP-сервер или HTTP-репозиторий. При этом в инфраструктуре заказчика должны быть развернуты TFTP-сервер и/или HTTP-репозиторий, в зависимости от используемой архитектуры (BIOS или UEFI).
Пример конфигурации DHCP-сервера
# cat /etc/dhcp/dhcpd.conf # базовые DHCP-опции option domain-name "wd2.local"; option domain-name-servers 192.168.11.10; default-lease-time 7776000; max-lease-time 7776000; option ntp-servers 192.168.0.2; option routers 192.168.11.10; option ntp-servers 192.168.0.2; ddns-updates on; ddns-update-style interim; ignore client-updates; key dhcp-server.wd2.local. { algorithm hmac-md5; secret "R2xOu1NWXSPkvNqfP8Rm6Q=="; } # Определение формата опции 93 # При работе без DHCP-proxy раскомментировать #option client-architecture code 93 = unsigned integer 16; # Настройка сегмента сети subnet 192.168.11.0 netmask 255.255.255.0 { range 192.168.11.100 192.168.11.200; # При работе без DHCP-proxy раскомментировать блок ## Определение архитектуры клиента: ## Определение архитектуры DHCP-клиента как iPXE # if exists user-class and option user-class = "iPXE" { ## Путь до iPXE-инструкции для iPXE-загрузчика # filename "${osmax_provisioner_base_url}/v1/boot_loaders/ipxe/config?templateSlug={templateSlug}"; ## Определение архитектуры DHCP-клиента как UEFI HTTP # } elsif option client-architecture = encode-int ( 16, 16 ) { ## Путь до ipxe-загрузчика для UEFI # filename "${fqdn_http_repo}/ipxe.efi"; # option vendor-class-identifier "HTTPClient"; ## Определение архитектуры DHCP-клиента как BIOS # } elsif option client-architecture = 00:00 { ## Имя файла iPXE-загрузчика для BIOS на TFTP-сервере # filename "undionly.kpxe"; ## Адрес TFTP-сервера # next-server ${fqdn_tftp_server}; ## Определение архитектуры DHCP-клиента как UEFI # } elsif option client-architecture = 00:09 { ## Имя файла iPXE-загрузчика для UEFI на TFTP-сервере # filename "ipxe.efi"; ## Адрес TFTP-сервера # next-server ${fqdn_tftp_server}; ## Определение архитектуры DHCP-клиента как UEFI # } elsif option client-architecture = 00:07 { ## Имя файла iPXE-загрузчика для UEFI на TFTP-сервере # filename "ipxe.efi"; ## Адрес TFTP-сервера # next-server ${fqdn_tftp_server}; ## Если архитектура не определена, отдавать iPXE-загрузчик для UEFI # } else { ## Имя файла iPXE-загрузчика для UEFI на TFTP-сервере # filename "ipxe.efi"; ## Адрес TFTP-сервера # next-server ${fqdn_tftp_server}; # } # базовые DHCP-опции ddns-domainname "wd2.local"; ddns-rev-domainname "in-addr.arpa"; zone 11.168.192.in-addr.arpa. { primary 127.0.0.1; key dhcp-server.wd2.local.; } }Пример конфигурации DHCP-сервера c доверенной установкой
# cat /etc/dhcp/dhcpd.conf # базовые DHCP-опции option domain-name "wd2.local"; option domain-name-servers 192.168.11.10; default-lease-time 7776000; max-lease-time 7776000; option ntp-servers 192.168.0.2; option routers 192.168.11.10; option ntp-servers 192.168.0.2; ddns-updates on; ddns-update-style interim; ignore client-updates; key dhcp-server.wd2.local. { algorithm hmac-md5; secret "R2xOu1NWXSPkvNqfP8Rm6Q=="; } # Определение формата опции 93 # При работе без DHCP-Proxy раскомментировать #option client-architecture code 93 = unsigned integer 16; # настройка сегмента сети subnet 192.168.11.0 netmask 255.255.255.0 { range 192.168.11.100 192.168.11.200; # При работе без DHCP-Proxy раскомментировать блок ## Определение архитектуры клиента: ## Определение архитектуры DHCP-клиента как iPXE # if exists user-class and option user-class = "iPXE" { ## Путь до iPXE-инструкции для iPXE-загрузчика (по протоколу HTTPS) # filename "${osmax_provisioner_base_url}/v1/boot_loaders/ipxe/config?templateSlug={templateSlug}"; ## Определение архитектуры DHCP-клиента как UEFI HTTP # } elsif option client-architecture = encode-int ( 16, 16 ) { ## Путь до ipxe-загрузчика для UEFI # filename "${fqdn_http_repo}/ipxe.efi"; # option vendor-class-identifier "HTTPClient"; ## Определение архитектуры DHCP-клиента как BIOS # } elsif option client-architecture = 00:00 { ## Имя файла iPXE-загрузчика для BIOS на TFTP-сервере # filename "undionly.kpxe"; ## Адрес TFTP-сервера # next-server ${fqdn_tftp_server}; ## Определение архитектуры dhcp-клиента как UEFI # } elsif option client-architecture = 00:09 { ## Имя файла iPXE-загрузчика для UEFI на TFTP-сервере # filename "ipxe.efi"; ## Адрес TFTP-сервера # next-server ${fqdn_tftp_server}; ## Определение архитектуры DHCP-клиента как UEFI # } elsif option client-architecture = 00:07 { ## Имя файла iPXE-загрузчика для UEFI на TFTP-сервере # filename "ipxe.efi"; ## Адрес TFTP-сервера # next-server ${fqdn_tftp_server}; ## Если архитектура не определена отдавать iPXE-загрузчик для UEFI # } else { ## Имя файла iPXE-загрузчика для UEFI на TFTP-сервере # filename "ipxe.efi"; ## Адрес TFTP-сервера # next-server ${fqdn_tftp_server}; # } # базовые DHCP-опции ddns-domainname "wd2.local"; ddns-rev-domainname "in-addr.arpa"; zone 11.168.192.in-addr.arpa. { primary 127.0.0.1; key dhcp-server.wd2.local.; } }Пример конфигурации DHCP-Proxy
# cat /etc/dnsmasq.d/dhcp.conf # Основные настройки dnsmasq dhcp-no-override pxe-prompt="Press any key for boot menu", 2 # Отключает DNS-службу, оставляя только DHCP-функциональность. port=0 # Включает логирование DHCP-сообщений. log-dhcp # Создание меток для сопоставления архитектур dhcp-match=set:x86PC, option:client-arch, 0 dhcp-match=set:BC_EFI, option:client-arch, 7 dhcp-match=set:EFI _x86-64, option:client-arch, 9 dhcp-match=set:HTTPClient,option:client-arch,16 dhcp-match=set:iPXE,175 # Загрузочные опции для iPXE-клиентов на основе меток dhcp-boot=tag:iPXE,${osmax_provisioner_base_url}/v1/boot_loaders/ipxe/config?templateSlug={templateSlug} dhcp-boot=tag:iPXE,tag:x86PC,${osmax_provisioner_base_url}/v1/boot_loaders/ipxe/config?templateSlug={templateSlug},,0.0.0.1 dhcp-boot=tag:HTTPClient,${fqdn_http_repo}/ipxe.efi dhcp-boot=tag:!iPXE,tag:x86PC,undionly.kpxe,${fqdn_tftp_server} dhcp-boot=tag:!iPXE,tag:BC_EFI,ipxe.efi,${fqdn_tftp_server} dhcp-boot=tag:!iPXE,tag:EFI_ x86-64,ipxe.efi,${fqdn_tftp_server} # Диапазон DHCP, используемый в режиме проксирования (без выдачи IP-адресов). dhcp-range=192.168.11.100,proxy # DHCP option 93 | Client architecture # 0 Standard PC BIOS # 6 32-bit x86 EFI # 7 64-bit x86 EFI # 9 64-bit x86 EFI (obsolete) # 10 32-bit ARM EFI # 11 64-bit ARM EFI # 16 64-bit x86 UEFIhttpClientПример конфигурации DHCP-Proxy с доверенной установкой
# cat /etc/dnsmasq.d/dhcp.conf # Основные настройки dnsmasq dhcp-no-override pxe-prompt="Press any key for boot menu", 2 # Отключает DNS-службу, оставляя только DHCP-функциональность. port=0 # Включает логирование DHCP-сообщений. log-dhcp # Создание меток для сопоставления архитектур dhcp-match=set:x86PC, option:client-arch, 0 dhcp-match=set:BC_EFI, option:client-arch, 7 dhcp-match=set:EFI _x86-64, option:client-arch, 9 dhcp-match=set:HTTPClient,option:client-arch,16 dhcp-match=set:iPXE,175 # Загрузочные опции для iPXE-клиентов на основе меток ## Путь до iPXE-инструкции для iPXE-загрузчика (по протоколу HTTPS) dhcp-boot=tag:iPXE,${osmax_provisioner_base_url}/v1/boot_loaders/ipxe/config?templateSlug={templateSlug} ## Путь до iPXE-инструкции для iPXE-загрузчика (по протоколу HTTPS) dhcp-boot=tag:iPXE,tag:x86PC,${osmax_provisioner_base_url}/v1/boot_loaders/ipxe/config?templateSlug={templateSlug},,0.0.0.1 dhcp-boot=tag:HTTPClient,${fqdn_http_repo}/ipxe.efi dhcp-boot=tag:!iPXE,tag:x86PC,undionly.kpxe,${fqdn_tftp_server} dhcp-boot=tag:!iPXE,tag:BC_EFI,ipxe.efi,${fqdn_tftp_server} dhcp-boot=tag:!iPXE,tag:EFI_ x86-64,ipxe.efi,${fqdn_tftp_server} # Диапазон DHCP, используемый в режиме проксирования (без выдачи IP-адресов). dhcp-range=192.168.11.100,proxy # DHCP option 93 | Client architecture # 0 Standard PC BIOS # 6 32-bit x86 EFI # 7 64-bit x86 EFI # 9 64-bit x86 EFI (obsolete) # 10 32-bit ARM EFI # 11 64-bit ARM EFI # 16 64-bit x86 UEFIhttpClientПлейсхолдеры из примера, указанные ниже, необходимо заменить вручную:
-
${osmax_provisioner_base_url}— актуальная конечная точка (endpoint) модуляosmax-provisionerдля получения стартового скрипта начального загрузчика; -
{templateSlug}— уникальное системное имя шаблона конфигурационного файла для конечной точкиv1/boot_loaders/ipxe/config?templateSlug=, для получения стартового скрипта загрузчика iPXE; -
${fqdn_tftp_server}— доменное имя (FQDN) поднятого TFTP-сервера, на котором хранится файл начального загрузчика iPXE; -
${fqdn_http_repo}-- доменное имя (FQDN) HTTP-репозитория, на котором хранится файл начального загрузчика iPXE.
-
-
Процесс установки
-
Устройство с помощью технологии PXE обращается к DHCP-серверу (DXCP-proxy). В ответ получает URL-адрес для скачивания iPXE-ядра и iPXE-скрипта.
-
iPXE-скрипт запускается на устройстве, инициализирует сетевой интерфейс устройства и обращается к модулю установки ОС за iPXE-скриптом для конкретного устройства, указывая его MAC-адрес.
-
Модуль установки OC по MAC-адресу выполняет поиск устройства и связанный с ним способ развертывания, на основе этой информации рендерит шаблон iPXE-скрипта для конкретного устройства и отдает сформированный скрипт.
-
После инициализации сетевого интерфейса установочное ядро запрашивает у модуля установки ОС файл автоответов.
-
Модуль установки ОС выполняет поиск устройства и связанный с ней способ развертывания по MAC-адресу, на основе этой информации рендерит шаблон файла автоответов для конкретного устройства и отдает сформированный скрипт.
-
Установка ОС выполняется согласно внутренней логике ОС с использованием предоставленного файла автоответов. Если в конце файла автоответов есть вызов пост-установочного скрипта, то установочное ядро целевой ОС запрашивает у модуля установки ОС скрипт пост-установки.
-
Модуль установки OC выполняет поиск устройства и связанный с ней способ установки по
machineId, на основе этой информации рендерит шаблон пост-установочного скрипта и отдает сформированный скрипт. -
Установочное ядро целевой ОС (или установленное ядро целевой ОС, в зависимости от команды вызова скрипта) выполняет скрипт, после чего установка завершается.