Развертывание Ubuntu 22.04 с PXEBoot с использованием Syslinux

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

У меня есть функциональный DHCP, ftp и tftp сервер с директорией tftpboot, в которой машины, настроенные на PXEboot, загружают syslinux без проблем по сети.

Я пытаюсь установить ubuntu 22.04 через PXE с помощью SYSLINUX.

Я следовал этому посту для достижения этой цели.

В этом посте говорится, что нужно извлечь файлы ядра vmlinuz и initrd из ISO установщика ubuntu 22.04, положить их в директорию tftpboot. Затем загрузить ISO из конфигурационного файла под названием default, находящегося в директории pxelinux.cfg. Ниже представлено не исчерпывающее схематичное представление директории tftpboot, относящейся к jammy (пропуская остальные файлы, традиционно используемые syslinux)

└── tftpboot    
    ├── pxelinux.0
    ├── jammy
    │   ├── initrd
    │   └── vmlinuz
    ├── pxelinux.cfg
    │   └── default
    └── syslinux (Все файлы загрузки Syslinux)
        └── bios
            ├── ldlinux.c32
            ├── libutil.c32
            └── menu.c32

Вот FTP директория, которая у меня есть

└── ftp   
    └── Ubuntu-22.04
        ├── ubuntu-22.04.1-live-server-amd64.iso
        └── Kickstart
            ├── user-data
            └── meta-data

Вот файл user-data, который я взял, чтобы сначала попробовать минимальную установку. Meta-data может быть пустым:

#cloud-config
autoinstall:
  identity:
    hostname: jammy-minimal
    password: $6$gnqbMUzHhQzpDEw.$.cCNVVDsDfj5Feebh.5O4VbOmib7tyjmeI2ZsFP7VK2kWwgJFbfjvXo3chpeAqCgXWVIW9oNQ/Ag85PR0IsKD/
    username: ubuntu
  version: 1

Вот конфигурационный файл по умолчанию, который я настроил.

default menu.c32
menu title Установщик Ubuntu

LABEL ubuntu
    MENU LABEL Установить сервер Ubuntu Jammy
    MENU DEFAULT
    KERNEL jammy/vmlinuz
    IPAPPEND 1
    APPEND initrd=jammy/initrd ip=dhcp url=ftp://172.16.0.4/Ubuntu-22.04/ubuntu-22.04.1-live-server-amd64.iso autoinstall ds=nocloud-net;s=ftp://172.16.0.4/Ubuntu-22.04/Kickstart

Наконец, чтобы добавить файлы user-data (cloud-config) и meta-data, в ftp, который будет использоваться файлом по умолчанию для загрузки своей конфигурации для начала автоматической установки, user-data содержат все шаги, которые мы выберем вручную ранее, для выполнения установки без ручного вмешательства (язык, форматирование и т.д.)

Ядро и ISO загружаются корректно и начинают процесс установки до меню установки, но проблема возникает, когда необходимо загрузить файл cloud-config (user-data), чтобы начать автоматическую установку. Он не может его найти, даже несмотря на то, что я указал его в файле по умолчанию. Вот что происходит на изображении ниже.

Загрузка ISO

Загрузка ISO

Ждёт навсегда cloud-init

Ждёт навсегда cloud-init

Затем запускает меню в конечном итоге

Затем запускает меню в конечном итоге

Похоже, что файл user-data игнорируется, если я загружаю его из файла syslinux по умолчанию. Как это возможно? Мне нужно загружать его из другого места, кроме файла по умолчанию?
Я уже думал попробовать загрузить его из модифицированного ISO. Будет ли это хорошей альтернативой? Спасибо

Ждёт навсегда cloud-init

Вы проверили логи cloud-init? Что вы там увидели?

Я подозреваю, что причина, по которой cloud-init ждёт вечно, заключается в том, что вы не предоставляете действительную строку NoCloudNet. Datasource NoCloud cloud-init не поддерживает ftp. Из документации:

С ds=nocloud значение seedfrom должно начинаться с / или file://. С ds=nocloud-net значение seedfrom должно начинаться с http:// или https:// и заканчиваться слэшом.

Если вы посмотрите ваши логи cloud-init, я уверен, вы увидите это предупреждение.

Обновление: В релизе 24.2 FTP будет добавлен в datasource NoCloud cloud-init.

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

Развертывание Ubuntu 22.04 с использованием PXE и SYSLINUX

Введение

Постановка задачи: вы пытаетесь развернуть Ubuntu 22.04 с использованием PXE-бут и SYSLINUX, однако у вас возникают трудности при загрузке файла cloud-config (user-data) для автоматической установки. В данном руководстве мы подробно разберем процесс настройки PXE для Ubuntu 22.04 с использованием SYSLINUX и поможем вам устранить возникшие проблемы.

Условия для успешной установки

У вас уже имеется рабочий сервер DHCP, FTP и TFTP, а также правильно настроенная директория tftpboot, где находятся необходимые файлы. Исходя из вашей структуры директорий, всё выглядит корректно, однако необходимо уделить особое внимание загрузке конфигурационных файлов для cloud-init.

Настройка TFTP и SYSLINUX

  1. Подготовка файлов: Извлеките из ISO-образа Ubuntu 22.04 файлы vmlinuz и initrd и поместите их в директорию tftpboot/jammy/.
  2. Настройка конфигурационного файла: В файле по умолчанию tftpboot/pxelinux.cfg/default убедитесь, что вы правильно указали параметры, особенно в секции, отвечающей за загрузку cloud-config:
default menu.c32
menu title Ubuntu installer

LABEL ubuntu
    MENU LABEL Install Ubuntu Jammy Server
    MENU DEFAULT
    KERNEL jammy/vmlinuz
    IPAPPEND 1
    APPEND initrd=jammy/initrd ip=dhcp url=http://172.16.0.4/Ubuntu-22.04/ubuntu-22.04.1-live-server-amd64.iso autoinstall ds=nocloud-net;s=http://172.16.0.4/Ubuntu-22.04/Kickstart/

Основные моменты, требующие внимания

  1. Протокол для загрузки cloud-config: Как указано в документации cloud-init, вы не можете использовать ftp:// с ds=nocloud-net. Вместо этого вам необходимо использовать http://. Вам нужно установить HTTP-сервер (например, Nginx или Apache) на том же сервере, где находится ваш FTP-сервер, чтобы он мог обслуживать файлы. Обратите внимание на добавление завершающего слэша (/) в конце URL.

  2. Проверка конфигураций: Убедитесь, что файл user-data доступен по указанному пути в вашем HTTP-сервере. Проверить доступность можно, попытавшись загрузить файл через браузер или используя curl:

curl http://172.16.0.4/Ubuntu-22.04/Kickstart/user-data
  1. Логи cloud-init: В случае возникших проблем обязательно изучите логи cloud-init. Они помогут диагностировать, что именно происходит при попытке загрузки конфигурационных файлов. Логи можно найти в /var/log/cloud-init.log и /var/log/cloud-init-output.log.

Перехождение к успешной установке

Если после всех предложенных изменений проблем не устранено, рассмотрите возможность создания модифицированного ISO-образа, включающего ваши конфигурационные файлы. Это может быть более сложным путем, но он может обеспечить более стабильную и надежную установку.

Заключение

Выбор правильного подхода к автоматизации установки Ubuntu с использованием PXE и SYSLINUX может значительно повысить эффективность вашего развертывания серверов. Убедитесь, что вы соблюдаете все рекомендации и внимательно отслеживаете логи для быстрого решения возможных проблем. Если возникают дополнительные вопросы, не стесняйтесь обращаться за помощью в профессиональное сообщество.

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

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