用替代方案替换 systemd-machine-id-setup?

用替代方案替换 systemd-machine-id-setup?

我们在虚拟化环境中使用ubuntu-18.04模板。因此,在创建模板之前,我们总是清空文件,/etc/machine-id以便在第一次启动时重新创建它。

问题是,如果同时启动多个基于 ubuntu-18 的虚拟机,systemd-machine-id-setup将为所有虚拟机生成相同的 ID,从而导致 IP 重复。我检查了这些服务器,它们在文件中的内容都相同/etc/machine-id

IP 重复

如果机器在不同时间开启,则会分配不同的 IP,因此我假设systemd-machine-id-setup是根据当前时间生成的(可能)。由于上图中的问题,这对我们来说是不可接受的。

有没有办法让操作系统/etc/machine-id根据备用二进制文件在启动时生成?

--- 更新 1 ---

根据@GeraldSchneider 的建议,我从 netplan 切换回 ifdownup并且 IP 停止重复,所以这肯定是 netplan 问题。

无重复 IP

即使这可以解决问题,我很好奇是否有办法设置另一种方法来生成文件,/etc/machine-id这样就不会使用 netplan 发生重复。

答案1

...我很好奇是否有办法设置另一种方法来生成 /etc/machine-id 文件...

根据机器 ID 手册页

...否则,将使用 /etc/machine-id 中的值。如果此文件为空或缺失,systemd 将尝试使用 /var/lib/dbus/machine-id 中的 D-Bus 机器 ID、内核命令行选项 container_uuid 的值、KVM DMI product_uuid(在 KVM 系统上),最后是随机生成的 UUID。

另外,在页面底部,

/etc/machine-id 这种简单的配置文件格式源自 D-Bus 引入的 /var/lib/dbus/machine-id 文件。事实上,后者可能是 /etc/machine-id 的符号链接。

因此,也可以使用来设置machine-id dbus-uuidgen,如下面的答案所示:

根据dbus-uuidgen 手册页

如果您运行不带任何选项的 dbus-uuidgen,它只会打印一个凭空产生的新 uuid。

相关内容