Установка по сети
При установке по сети используются следующие компоненты PXE:
-
DHCP-сервер.
PXE-клиент запрашивает IP-адрес через DHCP. DHCP-сервер также предоставляет информацию о TFTP-сервере, с которого загружается образ ОС.
-
TFTP-сервер.
После получения IP-адреса и информации о TFTP-сервере, PXE-клиент подключается к TFTP-серверу для загрузки начального загрузчика iPXE.
-
Загрузчик iPXE.
Загрузчик загружает ядро ОС и необходимые модули, после чего передает управление системе.
Чтобы выполнить установку, необходимо подготовить инфраструктуру для хранения и получения начального загрузчика iPXE. Для этого на сервере, на котором установлен бэкенд продукта, выполните настройку:
-
DHCP-сервера — отвечает за распределение и управление доступными IP-адресами и другими сетевыми параметрами, а также предоставляет пользовательскую конфигурацию сети.
-
(Альтернативный шаг) DHCP-Proxy — отвечает за передачу запросов к серверу.
DHCP-Proxy используется, если на стороне заказчика, по какой-либо причине невозможно внесение изменений в настройки DHCP-сервера. В этом случае необходимо развернуть DHCP-proxy (при его отсутствии) и вносить изменения в его конфигурацию.
Ниже приведены примеры конфигурации DHCP-сервера и DHCP-Proxy. В конфигурации предусмотрены условия для архитектур BIOS и UEFI. Для каждой архитектуры указываются свои файлы загрузчиков, которые будут загружаться через TFTP-сервер или HTTP-репозиторий. При этом в инфраструктуре заказчика должны быть развернуты TFTP-сервер и/или HTTP-репозиторий, в зависимости от используемой архитектуры (BIOS или UEFI).
Также в примере используются переменные:
-
${osmax_provisioner_base_url} — актуальная конечная точка (endpoint) модуля
osmax-provisionerдля получения стартового скрипта начального загрузчика;Для получения стартового скрипта загрузчика iPXE указан путь к методу
v1/boot_loaders/ipxe/config?templateSlug={templateSlug}, где в качестве значения атрибутаtemplateSlug, используется уникальное системное имя шаблона конфигурационного файла. -
${fqdn_tftp_server} —
fqdnподнятого TFTP-сервера, на котором хранится файл начального загрузчика iPXE; -
${fqdn_http_repo}-
fqdnHTTP-репозитория, на котором хранится файл начального загрузчика iPXE.Конфигурация 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-загрузчика (по протоколу http) + ## Путь до 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-загрузчика (по протоколу HTTP) + ## Путь до iPXE-инструкции для iPXE-загрузчика (по протоколу HTTPS) dhcp-boot=tag:iPXE,${osmax_provisioner_base_url}/v1/boot_loaders/ipxe/config?templateSlug={templateSlug} - # Путь до iPXE-инструкции для iPXE-загрузчика (по протоколу HTTP) + ## Путь до 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
-