Нетботинг голых металлических узлов, передача VLAN-тега установщику

Вопрос или проблема

Мне нужно установить Ubuntu 18.04 на несколько физических узлов. Я использую обычный процесс Preseed + Debian Installer.

Мы используем VLAN, и я не могу понять, как настроить установочный образ для использования этого VLAN для установщика.

Вот как работает процесс:

  1. Настроить аппаратный сетевой интерфейс для использования VLAN-тега (это легко) через меню микропрограммы.
  2. Хост получает DHCP IP и отправляется на TFTP сервер.
  3. Сервер TFTP отправляет файлы установочного образа на хост. Хост получает их.
  4. Хост загружает образ установки Ubuntu.
  5. Установка продолжается.

Шаги 1-3 показывают, что хост, сеть и VLAN работают.

На шаге #4 установочный образ загружает новую сетевую конфигурацию. Однако он не добавляет VLAN-тег. Он пытается получить DHCP-адрес, но, поскольку он не использует VLAN, DHCP-сервер никогда не видит запрос.

Как я могу передать VLAN-тег установщику? Есть ли команда ядра, которую можно использовать с Ubuntu, как это делается с Fedora?

Я хорошо знаком с Kickstart на CentOS, но я довольно новичок в Preseed.

Ubuntu решила эту проблему в Ubuntu 19.06, но я использую 18.04.

Что я сделал:

  1. Настроил систему вручную.

  2. Настроил сетевой интерфейс вручную.

  3. Выполнил следующую команду, чтобы выяснить, какие параметры использует preseed/debian-installer для netcfg. Многие параметры не задокументированы.

  4. Добавил опции netcfg/... в свою командную строку ядра, как показано в этом примере:

     LABEL linux
         KERNEL boot/ubuntu-mirror-linux
         APPEND initrd=boot/ubuntu-mirror-initrd.gz interface=auto url=http://mirrors.example.org/somefile.cfg ramdisk_size=10800 root=/dev/rd/0 rw auto ... ksdevice=bootif priority=medium netcfg/use_vlan=true netcfg/vlan_id=999
         IPAPPEND 2
    

Опция netcfg/use_vlan больше не работает в Ubuntu.

Я использую эти параметры командной строки ядра для загрузки установщика subiquity с пометкой VLAN :

vlan=<vlan_interface_name>.<vlanid>:<parent interface> ip=dhcp

Смотрите man initramfs-tools и соответствующий исходный код в Ubuntu Noble

Например, в PXELinux :

KERNEL iso/ubuntu-24.04.1-live-server-amd64/vmlinuz
INITRD iso/ubuntu-24.04.1-live-server-amd64/initrd
APPEND root=/dev/ram0 ramdisk_size=2529500 vlan=myvlan.123:eno1 ip=dhcp iso-url=http://pxe/ubuntu-24.04.1-live-server-amd64.iso autoinstall ds=nocloud-net;s=http://pxe/autoinstall/user-data

Ответ или решение

Установка Ubuntu 18.04 на Bare Metal Узлы с Поддержкой VLAN

Ваша задача по установке Ubuntu 18.04 на bare metal узлы с использованием VLAN может показаться сложной, особенно учитывая ограничения версии вашей операционной системы. Однако с помощью правильной конфигурации и использования соответствующих параметров командной строки на ядре, вы сможете успешно выполнить установку.

Основные Шаги Процесса Установки

Как вы уже описали, процесс установки включает в себя следующие этапы:

  1. Конфигурация аппаратного интерфейса для использования VLAN (это просто через меню прошивки).
  2. Получение DHCP IP и отправка запроса на TFTP сервер.
  3. Передача файлов образа установки на узел через TFTP.
  4. Загрузка образа установки Ubuntu узлом.
  5. Процесс установки.

На этапе 4, после загрузки образа, возникает проблема с VLAN, так как установщик не добавляет тег VLAN и, следовательно, не может получить DHCP адрес.

Решение Проблемы с Тегами VLAN

Для решения проблемы с передачей тегов VLAN во время установки Ubuntu 18.04, используйте параметры командной строки ядра. Версия 18.04 не поддерживает параметр netcfg/use_vlan, который вы пытались использовать. Вместо этого вам нужно будет указать параметры специфичным образом.

Пример параметров ядра для PXELinux:

KERNEL iso/ubuntu-24.04.1-live-server-amd64/vmlinuz
INITRD iso/ubuntu-24.04.1-live-server-amd64/initrd
APPEND root=/dev/ram0 ramdisk_size=2529500 vlan=myvlan.123:eno1 ip=dhcp iso-url=http://pxe/ubuntu-24.04.1-live-server-amd64.iso autoinstall ds=nocloud-net;s=http://pxe/autoinstall/user-data

Объяснение Примера

  • vlan=myvlan.<номер_vlan>:<родительский интерфейс>: данный параметр указывает, какой VLAN использовать вместе с родительским интерфейсом. Например, vlan=myvlan.123:eno1 подразумевает использование VLAN с ID 123 через интерфейс eno1.

  • ip=dhcp: указывает на то, что узел должен получать IP адрес через DHCP.

  • autoinstall ds=nocloud-net;s=http://pxe/autoinstall/user-data: эти параметры позволяют автоматизировать установку с использованием данных, хранящихся по указанному URL.

Дополнительная Информация

Вы можете ознакомиться с документацией по initramfs-tools и исходным кодом, который предоставляет больше информации о поддержке параметров сети. Полезные ссылки:

Заключение

Надеюсь, представленные шаги и рекомендации помогут вам успешно установить Ubuntu 18.04 на bare metal узлы с поддержкой VLAN. Конфигурация установки через PXE с использованием правильных параметров командной строки является ключом к решению вашей проблемы. Если возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...