Ubuntu 24.04.1 автоподстановка с cloud-init не устанавливает имя хоста из файла ‘meta-data’

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

Мне нужно использовать как user-data, так и meta-data файлы для установки Ubuntu server 24.04.1. Установка не выполняется в облаке, а на самоуправляемой виртуальной машине. Имя хоста должно быть установлено на основе директивы из файла meta-data. Мой файл meta-data:

instance-id: i-fmYmG78yLfijWeNzu
instance-action: none
local-hostname: uls-base

В файле user-data используется параметр preserve_hostname:

  preserve_hostname: false
  prefer_fqdn_over_hostname: false
  manage_etc_hosts: false
  create_hostname_file: true
  user-data:
    # hostname: ubuntu
    # fqdn:

В файле user-data нет параметра hostname, так как он имеет приоритет над файлом meta-data. Установка проходит успешно, но имя хоста после установки localhost.
В качестве варианта я попытался включить директивы из файла meta-data в раздел datastore файла user-data:

  datasource:
    NoCloud:
      seedfrom: None
      # fs_label: метка на файловых системах, которые будут проверяться на предмет источника NoCloud
      fs_label: cidata
      user-data: []
      meta-data: |
        instance-id: i-fmYmG78yLfijWeNzu
        instance-action: none
        local-hostname: uls-base

Результат не изменился. Я не нахожу ошибок, связанных с файлом, в cloud-init.log:

2024-12-21 17:51:11,456 - util.py[DEBUG]: Чтение из /var/lib/cloud/seed/nocloud/meta-data (quiet=False)
2024-12-21 17:51:11,456 - util.py[DEBUG]: Прочитано 0 байт из /var/lib/cloud/seed/nocloud/meta-data
2024-12-21 17:51:11,456 - util.py[DEBUG]: Чтение из /var/lib/cloud/seed/nocloud/user-data (quiet=False)
2024-12-21 17:51:11,456 - util.py[DEBUG]: Прочитано 0 байт из /var/lib/cloud/seed/nocloud/user-data
2024-12-21 17:51:11,910 - util.py[DEBUG]: Запись в /var/lib/cloud/instances/i-fmYmG78yLfijWeNzu/user-data.txt - wb: [600] 15442 байта
2024-12-21 17:51:11,925 - util.py[DEBUG]: Запись в /var/lib/cloud/instances/i-fmYmG78yLfijWeNzu/user-data.txt.i - wb: [600] 15777 байт
2024-12-21 17:51:11,926 - handlers.py[DEBUG]: старт: init-local/consume-user-data: чтение и применение user-data
2024-12-21 17:51:11,941 - handlers.py[DEBUG]: завершение: init-local/consume-user-data: УСПЕШНО: чтение и применение user-data

В лог-файле installer-journal.txt проверка md5 суммы успешна:

Dec 21 12:51:22 ubuntu-server casper-md5check[1841]: Проверка ./cidata/meta-data..../cidata/meta-data: OK
Dec 21 12:51:22 ubuntu-server casper-md5check[1841]: Проверка ./cidata/user-data...../cidata/user-data: OK

При этом cloud-init использует информацию из meta-файла во время установки, об этом свидетельствует cloud-init.log:

2024-12-21 17:51:11,910 - util.py[DEBUG]: Запись в /var/lib/cloud/instances/i-fmYmG78yLfijWeNzu/user-data.txt - wb: [600] 15442 байта
2024-12-21 17:51:11,925 - util.py[DEBUG]: Запись в /var/lib/cloud/instances/i-fmYmG78yLfijWeNzu/user-data.txt.i - wb: [600] 15777 байт

Он использует instance-id, который я установил в файле meta-data /var/lib/cloud/instances/i-fmYmG78yLfijWeNzu/user-data.txt

Каталог в файле .iso /cidata используется как источник данных для всех файлов: user-data, meta-data и vendor-data. Использование источника данных NoCloud указано в конфигурации grub:

menuentry "Попробовать или Автоустановить Ubuntu Server" {
        set gfxpayload=keep
        linux   /casper/vmlinuz quiet autoinstall ds=nocloud\;s=/cdrom/cidata/  ---
        initrd  /casper/initrd
}

Все настройки и установка выполняются без ошибок, единственная проблема заключается в установке имени хоста на основе конфигурации из файла meta-data. Большое спасибо за помощь!

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

Проблема с установкой имени хоста в Ubuntu 24.04.1 с автодинамической установкой и cloud-init

При установке Ubuntu 24.04.1 с использованием автодинамической установки и cloud-init, настройка имени хоста из файла meta-data может вызывать ряд проблем, особенно в условиях развертывания на локальной виртуальной машине. Давайте подробно рассмотрим вашу ситуацию и предложим возможные пути решения.

Описание проблемы

Вы столкнулись с ситуацией, когда имя хоста не устанавливается правильным образом — система по умолчанию использует localhost, несмотря на указание значения local-hostname в файле meta-data. Рассмотрим ваши файлы:

Файл meta-data:

instance-id: i-fmYmG78yLfijWeNzu
instance-action: none
local-hostname: uls-base

Файл user-data:

preserve_hostname: false
prefer_fqdn_over_hostname: false
manage_etc_hosts: false
create_hostname_file: true
user-data:
  # hostname: ubuntu
  # fqdn:

Вы правильно указали, что параметр preserve_hostname установлен в false, что, по идее, должно позволить системе использовать указание из файла meta-data.

Анализ

  1. Проверка работы cloud-init: Анализ логов cloud-init.log показывает, что файлы user-data и meta-data считываются, но далее в процессе имя хоста игнорируется. Рекомендуется удостовериться, что структура и содержимое файлов верны, и внести поправки по необходимости.

  2. Содержимое файлов и их размещение: Убедитесь, что файлы user-data и meta-data присутствуют в правильной директории и читаются при запуске системы. Вы могли попытаться напрямую задать имя хоста в user-data, но это может было проигнорировано в пользу указания из meta-data.

  3. Параметры datasource: Ваш метод добавить описание метаданных в раздел datasource в user-data не привел к желаемому результату, что говорит о том, что переменная meta-data в разделе datasource может не обрабатываться правильно.

Рекомендации по решению

  1. Добавление параметра hostname в user-data: Попробуйте явно определить имя хоста в user-data, добавив следующее:
hostname: uls-base
fqdn: uls-base.localdomain
  1. Проверка способа загрузки ISO: Проверьте, корректно ли настроен GRUB. Директива ds=nocloud\;s=/cdrom/cidata/ должна правильно указывать выходные файлы для cloud-init.

  2. Используйте версию cloud-init: Убедитесь, что у вас последняя версия cloud-init. В некоторых версиях могут быть исправления или обновления, касающиеся обработки метаданных или установки хоста.

  3. Логи и диагностика: Увеличьте уровень логирования для cloud-init, чтобы получить более подробные логи, которые могут показать, почему local-hostname игнорируется.

  4. Тестирование в разных средах: Попробуйте воспроизвести проблему на другой виртуальной машине или среде, чтобы исключить возможность конфигурационного конфликта на уровне гипервизора.

Заключение

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

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

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