配置集成的 DHCP 服务器

使用集成的 DHCP 服务器设置静态 DHCP 分配

您可以使用 ipv4_address 参数并设置 inventory_dhcp 设置为 true 的值来设置静态 DHCP 预留。 这将导致 dnsmasq 中定义的硬件 MAC 地址列表中的第一个 MAC 地址接收静态地址分配。

强制 DNS 解析到 ipv4_address

dnsmasq 将解析租约文件中每个服务器分配到的所有条目到 IP。 但是,如果您正在使用多个网络,则此 IP 并不总是期望的 IP。 要强制 DNS 始终解析到 ipv4_address,请将 inventory_dns 设置设置为 true 的值。 这将导致每个服务器通过显式使用 dnsmasq 的地址功能解析到 ipv4_address

扩展 dnsmasq 配置

Bifrost 在 /etc/dnsmasq.conf 中管理 dnsmasq 配置文件。 在写入文件后,不建议对其进行手动修改。 dnsmasq 支持在 /etc/dnsmasq.d 中使用其他配置文件,从而扩展 bifrost 提供的 dnsmasq 配置。 可以使用此机制为 ironic 管理的系统提供额外的 DHCP 选项,甚至为不由 ironic 管理的系统创建 DHCP 启动环境。 例如,创建一个文件 /etc/dnsmasq.d/example.conf,内容如下

dhcp-match=set:<tag>,<match criteria>
dhcp-boot=tag:<tag>,<boot options>

应根据您的环境修改标签、匹配标准和启动选项。 在这里,我们使用 dnsmasq 标签来匹配我们想要管理的宿主机。 dnsmasq 将使用最后一个匹配的带标签的 dhcp-boot 选项,或者如果没有匹配项,则使用未带标签的默认 dhcp-boot 选项。 这些选项将插入到 dnsmasq 配置文件的 conf-dir=/etc/dnsmasq.d 行中。 配置完成后,向 dnsmasq 发送 HUP 信号,这将导致它重新读取其配置

killall -HUP dnsmasq

将 Bifrost 与您自己的 DHCP 服务器一起使用

用户可能已经在其网络上拥有动态主机配置协议 (DHCP) 服务器的可能性是存在的。

目前,当 Ironic 配置为独立模式时,不使用 DHCP 提供程序。 这需要手动配置 DHCP 服务器才能部署镜像。 Bifrost 利用 dnsmasq 实现此功能;但是,可以使用任何 DHCP 服务器。 这主要用于在单个平面网络的环境中运行,尽管从概念上讲,节点可以被隔离。

所需内容

  • 网络段上的 DHCP 服务器

  • 更改 DHCP 设置的适当权限

  • 对 API 和 conductor 的网络访问。 请记住,iPXE 镜像不支持 ICMP 重定向。

示例 DHCP 服务器配置

在下面的示例中,使用了端口 8080。 但是,端口号可能因环境配置而异。

dnsmasq

dhcp-match=set:ipxe,175 # iPXE sends a 175 option.
dhcp-boot=tag:ipxe,http://<Bifrost Host IP Address>:8080/boot.ipxe
dhcp-boot=/undionly.kpxe,<TFTP Server Hostname>,<TFTP Server IP Address>

互联网系统联盟 DHCPd

if exists user-class and option user-class = "iPXE" {
      filename "http://<Bifrost Host IP Address>:8080/boot.ipxe";
} else {
      filename "/undionly.kpxe";
      next-server <TFTP Server IP Address>;
}

架构

应该强调的是,Ironic 在独立模式下仅打算在受信任的环境中使用。

         +-------------+
         | DHCP Server |
         +-------------+
                |
+--------Trusted-Network----------+
       |                    |
+-------------+       +-----------+
|Ironic Server|       |   Server  |
+-------------+       +-----------+