Вопрос или проблема
Мне нужно использовать как 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
.
Анализ
-
Проверка работы
cloud-init
: Анализ логовcloud-init.log
показывает, что файлыuser-data
иmeta-data
считываются, но далее в процессе имя хоста игнорируется. Рекомендуется удостовериться, что структура и содержимое файлов верны, и внести поправки по необходимости. -
Содержимое файлов и их размещение: Убедитесь, что файлы
user-data
иmeta-data
присутствуют в правильной директории и читаются при запуске системы. Вы могли попытаться напрямую задать имя хоста вuser-data
, но это может было проигнорировано в пользу указания изmeta-data
. -
Параметры datasource: Ваш метод добавить описание метаданных в раздел
datasource
вuser-data
не привел к желаемому результату, что говорит о том, что переменнаяmeta-data
в разделе datasource может не обрабатываться правильно.
Рекомендации по решению
- Добавление параметра hostname в
user-data
: Попробуйте явно определить имя хоста вuser-data
, добавив следующее:
hostname: uls-base
fqdn: uls-base.localdomain
-
Проверка способа загрузки ISO: Проверьте, корректно ли настроен GRUB. Директива
ds=nocloud\;s=/cdrom/cidata/
должна правильно указывать выходные файлы для cloud-init. -
Используйте версию cloud-init: Убедитесь, что у вас последняя версия
cloud-init
. В некоторых версиях могут быть исправления или обновления, касающиеся обработки метаданных или установки хоста. -
Логи и диагностика: Увеличьте уровень логирования для cloud-init, чтобы получить более подробные логи, которые могут показать, почему
local-hostname
игнорируется. -
Тестирование в разных средах: Попробуйте воспроизвести проблему на другой виртуальной машине или среде, чтобы исключить возможность конфигурационного конфликта на уровне гипервизора.
Заключение
Установка имени хоста — это важный процесс при настройке системы. Если вышеперечисленные шаги не приведут к решению, обращайтесь к сообществу Ubuntu или официальной документации по cloud-init для дальнейших рекомендаций. Надеюсь, представленная информация поможет вам устранить возникшую проблему.