1 回答
TA贡献1830条经验 获得超9个赞
实际上,PXELINUX带有基于系统MAC地址的识别机制,并且可以相应地定制配置。由于无论如何您都需要对裸机服务器进行统计(端口安全有人吗?;)),因此无论如何您都应该知道裸机服务器上所有接口的 MAC 外观。
您的目录通常如下所示(路径前缀可能不同)。
/srv/pxe/pxelinux.cfg/default
现在发生的情况是,您的系统启动,发送 DHCP 请求并获得包含 DHCP 选项“下一个服务器”和“文件名”的报价。当系统选择所述报价时,它将连接到“下一个服务器”并请求“文件名”,通常为pxelinux.0
. 这是您的第一个潜在钩子:编写一个 tftp 服务器来处理请求并注册您的系统。
现在pxelinux.0
执行,它会读取上面的配置文件。但事情是这样的:假设系统的 Mac 地址是23:67:33:5a:cc:e8
,文件
/srv/pxe/pxelinux.cfg/23-67-33-5a-cc-e8
存在,则将读取此内容。这是您的第二个钩子:请求将由 tftp 记录。
无论是否default
使用特定于系统的配置文件,基本上我们谈论的是 GRUB 配置文件。假设你使用 Kickstart 安装系统,它会看起来像这样
default linux prompt 0 timeout 1 label linux kernel /images/yourdistro/vmlinuz ipappend 2 append initrd=/images/yourdistro/initrd.img console=ttyS0,115200
现在,事情是这样的:您有多种可能性在启动时执行自定义程序:
将可执行文件的路径附加到参数中
append
。按照惯例,内核会将所有它不知道的参数发送到 pid 1。虽然我没有测试 systemd 是否遵守约定并简单地依次执行一个它不知道的参数,但我假设也是如此。计划任务。现在大多数 cron 实现都支持
@boot
时间定义。init 系统,无论是 systemd 还是 openrc 或者好的 SYSV init。
最后但并非最不重要的一点是如何配置机器。我强烈建议不要重新发明轮子。我在(闭源)项目中有非常相似的要求。我们使用 kickstart 进行基本的系统安装,并在重新启动到Ansible Tower后简单地执行一个 curl 命令,触发更详细的配置。由于我们有一个带有 MAC 的 DHCP 服务器、为所述 MAC 保留的 IP 以及易于配置的主机名(dnsmasq、caugh、caugh),所以这不是什么大问题。基本上,我们手动要做的就是注册 MAC 地址并分配 IP 和主机名,然后启动机器。
- 1 回答
- 0 关注
- 92 浏览
添加回答
举报