![用替代方案替换 systemd-machine-id-setup?](https://linux22.com/image/805396/%E7%94%A8%E6%9B%BF%E4%BB%A3%E6%96%B9%E6%A1%88%E6%9B%BF%E6%8D%A2%20systemd-machine-id-setup%EF%BC%9F.png)
我们在虚拟化环境中使用ubuntu-18.04
模板。因此,在创建模板之前,我们总是清空文件,/etc/machine-id
以便在第一次启动时重新创建它。
问题是,如果同时启动多个基于 ubuntu-18 的虚拟机,systemd-machine-id-setup
将为所有虚拟机生成相同的 ID,从而导致 IP 重复。我检查了这些服务器,它们在文件中的内容都相同/etc/machine-id
。
如果机器在不同时间开启,则会分配不同的 IP,因此我假设systemd-machine-id-setup
是根据当前时间生成的(可能)。由于上图中的问题,这对我们来说是不可接受的。
有没有办法让操作系统/etc/machine-id
根据备用二进制文件在启动时生成?
--- 更新 1 ---
根据@GeraldSchneider 的建议,我从 netplan 切换回 ifdownup并且 IP 停止重复,所以这肯定是 netplan 问题。
即使这可以解决问题,我很好奇是否有办法设置另一种方法来生成文件,/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,它只会打印一个凭空产生的新 uuid。