如何根据主机在特定的用户数据文件上运行自动安装?

如何根据主机在特定的用户数据文件上运行自动安装?

我工作的环境有几十台不同的服务器,每年都会添加几次新服务器。我们使用 PXE 启动(Legacy/BIOS 和 EFI)来配置这些新机器。我正在将我们的网络安装过程从以前的 debian-installer 机制更改为新的 autoinstall / cloud-init 机制。

我注意到的一个限制是 syslinux (BIOS) 或 grub.cfg 条目 (EFI) 指向特定的user-dataURL,例如http://example.org/ks/user-data。但是,如果您要配置多台不同的机器,该怎么办?该文件要求在块中设置user-data诸如此类的内容,使得这些文件仅适用于配置单个特定机器。hostnameidentity

因此,我的第一个想法是为每个主机生成一个单独的user-data文件,以供使用。但是,由于该 URL 是硬编码在 syslinux/grub 配置中的,这怎么可能呢?

tl;dr 新的自动安装/云初始化系统中是否存在某种机制,可以根据正在进行 PXE 启动的主机提供不同的配置?

答案1

我见过有两种方法。

  1. 创建一个user-data用于所有机器的非常基本的文件。在该user-data文件中,使用early-commands创建特定于机器的配置/autoinstall.yaml

  2. 为每个设备提供自定义user-data文件。您可以做什么取决于您的 DHCP 服务器和 PXE 映像的功能。一个简单的解决方案是根据 MA​​C 地址等属性提供不同的静态文件。更复杂的解决方案可以动态生成文件。Syslinux 和 Grub 都可以根据 MA​​C 地址更改配置,但我发现 Grub 更加灵活。

其他讨论

这些包含两种方法的更多细节和示例。

相关内容