我工作的环境有几十台不同的服务器,每年都会添加几次新服务器。我们使用 PXE 启动(Legacy/BIOS 和 EFI)来配置这些新机器。我正在将我们的网络安装过程从以前的 debian-installer 机制更改为新的 autoinstall / cloud-init 机制。
我注意到的一个限制是 syslinux (BIOS) 或 grub.cfg 条目 (EFI) 指向特定的user-data
URL,例如http://example.org/ks/user-data
。但是,如果您要配置多台不同的机器,该怎么办?该文件要求在块中设置user-data
诸如此类的内容,使得这些文件仅适用于配置单个特定机器。hostname
identity
因此,我的第一个想法是为每个主机生成一个单独的user-data
文件,以供使用。但是,由于该 URL 是硬编码在 syslinux/grub 配置中的,这怎么可能呢?
tl;dr 新的自动安装/云初始化系统中是否存在某种机制,可以根据正在进行 PXE 启动的主机提供不同的配置?
答案1
我见过有两种方法。
创建一个
user-data
用于所有机器的非常基本的文件。在该user-data
文件中,使用early-commands
创建特定于机器的配置/autoinstall.yaml
。为每个设备提供自定义
user-data
文件。您可以做什么取决于您的 DHCP 服务器和 PXE 映像的功能。一个简单的解决方案是根据 MAC 地址等属性提供不同的静态文件。更复杂的解决方案可以动态生成文件。Syslinux 和 Grub 都可以根据 MAC 地址更改配置,但我发现 Grub 更加灵活。
其他讨论
这些包含两种方法的更多细节和示例。