用替代品替换 systemd-machine-id-setup?

nKn*_*nKn 5 networking ubuntu ubuntu-18.04 netplan

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

问题在于,如果同时启动多个基于 ubuntu-18 的 VM,systemd-machine-id-setup将为所有这些VM生成相同的 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 不会发生重复。

小智 2

...我很好奇是否有办法设置替代方法来生成 /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。