Мы используем ubuntu-18.04
шаблон в среде виртуализации. Поэтому перед созданием шаблона мы всегда очищаем /etc/machine-id
файл, поэтому он воссоздается при первой загрузке.
Проблема в том, что если запускать сразу несколько виртуальных машин на базе ubuntu-18, systemd-machine-id-setup
будет генерировать одинаковый идентификатор для всех, что приведет к дублированию IP-адресов. Я проверил эти серверы, и все они имеют одинаковый контент в /etc/machine-id
файл.
Если машины включаются с определенным промежутком времени, назначаются разные IP-адреса, поэтому я предполагаю systemd-machine-id-setup
генерируется на основе текущего времени (возможно). Это неприемлемо для нас из-за проблемы на изображении выше.
Есть ли способ заставить ОС генерировать /etc/machine-id
при загрузке на основе альтернативного бинарника?
--- ОБНОВЛЕНИЕ 1 ---
По совету @GeraldSchneider я переключился обратно с netplan на ifdownup и IP-адреса перестали дублироваться, так что определенно это проблема netplan.
Даже если бы это могло решить проблему, мне любопытно, есть ли способ установить альтернативный способ создания /etc/machine-id
файл, поэтому при использовании netplan не происходит дублирования.
... Мне любопытно, есть ли способ установить альтернативный способ создания файла / etc / machine-id ...
По страница руководства по идентификатору машины,
... В противном случае будет использоваться значение из / etc / machine-id. Если этот файл пуст или отсутствует, systemd попытается использовать идентификатор машины D-Bus из / var / lib / dbus / machine-id, значение параметра командной строки ядра container_uuid, KVM DMI product_uuid (в системах KVM) и, наконец, случайно сгенерированный UUID.
А также внизу страницы
Простой формат файла конфигурации / etc / machine-id происходит из файла / var / lib / dbus / machine-id, представленного D-Bus. Фактически, этот последний файл может быть символической ссылкой на / etc / machine-id.
Следовательно, также можно установить идентификатор машины, используя dbus-uuidgen
, как видно из следующего ответа:
По страница руководства dbus-uuidgen,
Если вы запустите dbus-uuidgen без параметров, он просто напечатает новый uuid, созданный из воздуха.