PXE 过滤器服务¶
PXE 过滤器服务负责管理负责 非托管检查 的 dnsmasq 实例。运行它允许此 dnsmasq 实例与 OpenStack Networking 服务的 DHCP 服务器在同一物理网络上共存。
警告
PXE 过滤器服务目前是实验性的。对于生产级解决方案,请暂时继续使用 ironic-inspector。
它是如何工作的?¶
PXE 过滤器服务核心是一个定期任务,它获取所有端口并将其节点 ID 与正在进行带内检查的节点 ID 进行比较。所有 MAC 地址都会添加到 dnsmasq 主机文件中:添加到正在检查的节点的允许列表和添加到其余节点的拒绝列表。
此外,当有任何节点正在检查时,也允许未知的 MAC 地址。否则,将拒绝从未知 MAC 地址到 dnsmasq 服务的访问。
安装¶
从 配置非托管带内检查 开始。然后创建一个 PXE 过滤器服务可写入且 dnsmasq 可读的 *hostsdir*。在 dnsmasq 配置文件中配置它
dhcp-hostsdir=/var/lib/ironic/hostsdir
以及在 Bare Metal 服务配置中
[pxe_filter]
dhcp_hostsdir = /var/lib/ironic/hostsdir
然后创建一个 systemd 服务来启动 ironic-pxe-filter 与 dnsmasq 一起启动,例如:
[Unit]
Description=Ironic PXE filter
[Service]
Type=notify
Restart=on-failure
ExecStart=/usr/bin/ironic-pxe-filter --config-file /etc/ironic/ironic.conf
User=ironic
Group=ironic
请注意,由于技术限制,PXE 过滤器进程无法自行清理 *hostsdir*。您可能需要在服务启动时执行此操作,例如这样(假设 dnsmasq 服务是 ironic-dnsmasq 并且其 PID 存储在 /run/ironic/dnsmasq.pid 中)
[Unit]
Description=Ironic PXE filter
Requires=ironic-dnsmasq.service
After=ironic-dnsmasq.service
[Service]
Type=notify
Restart=on-failure
ExecStartPre=+/bin/bash -c "rm -f /usr/lib/ironic/hostsdir/* && kill -HUP $(cat /run/ironic/dnsmasq.pid) || true"
ExecStart=/usr/bin/ironic-pxe-filter --config-file /etc/ironic/ironic.conf
User=ironic
Group=ironic
扩展性考虑¶
PXE 过滤器服务应为每个专用于非托管检查的 dnsmasq 实例运行一次。在大多数云环境中,这将是 1 个实例。