支持外部 DHCP 提供程序

https://blueprints.launchpad.net/ironic/+spec/support-external-dhcp

Ironic 应该允许操作员使用外部 DHCP 服务器,而不是 Neutron 的 DHCP 服务器。

问题描述

部署者希望使用外部 DHCP 服务器的原因有很多,包括

  • Neutron 在部署者的环境中不可用。

  • 部署者可能认为 Neutron 的 DHCP 服务器不可扩展。Neutron 的 DHCP 服务器在底层使用 dnsmasq,而 dnsmasq 已知不适合大规模部署(请参阅参考部分中的链接)。

提议的变更

Ironic 应该有一个配置选项 dhcp_provider,用于指定使用哪个提供程序。所有 DHCP 提供程序都将实现一个 DHCP 提供程序接口,该接口暴露一个方法来更新端口的 DHCP 属性。

驱动程序将不再直接调用 DHCP 提供程序,而是从工厂请求一个 DHCP 提供程序,该工厂将返回配置选项中指定的提供程序。

最初的两个提供程序实现将是“neutron”和“none”。

与 DHCP 无关的 Neutron 功能(例如,更新端口的 MAC 地址)将不会被移动。

备选方案

从短期来看,使用一个布尔值 use_neutron_for_dhcp 配置,告诉 Ironic 是使用 Neutron 还是什么都不做,会更简单。这将复制所提议更改的初始功能。但是,添加新的 DHCP 提供程序将变得困难,并且部署驱动程序也将需要更多的工作。

数据模型影响

无。

REST API 影响

无。

驱动程序 API 影响

无。

Nova 驱动程序影响

无。

安全影响

无。

其他最终用户影响

无。

可扩展性影响

这将只会使 Ironic 更加可扩展,因为它将暴露一个配置,在该配置中 Ironic 不再与 Neutron 交互。

性能影响

无。

其他部署者影响

将添加一个配置选项 dhcp_provider,它最初有两个选项:“neutron”和“none”。

对于部署者来说,不会有立即的影响,因为 dhcp_provider 默认设置为“neutron”,这不会改变行为。

但是,希望使用外部 DHCP 提供程序的部署者必须设置配置选项,并部署一个 DHCP 服务。

开发人员影响

无。

实现

负责人

主要负责人

jroll

其他贡献者

JoshNang ellenh

工作项

  • 添加 dhcp_provider 配置选项。

  • 将 Neutron API 放置在 DHCP 提供程序接口之后。

  • 实现“none”DHCP 提供程序。

  • 实现一个 DHCP 提供程序工厂。

  • 添加 Tempest 测试

依赖项

无。

测试

应该编写使用外部 DHCP 提供程序的 Tempest 测试。由于 dnsmasq 已经安装在 devstack 中,因此可以通过独立运行 dnsmasq 来实现,而不是通过 Neutron 运行。

文档影响

需要为这个配置选项编写文档。这应该包括

  • 配置选项的作用。

  • 如何配置外部 DHCP 服务器与 Ironic 协同工作。

  • 对于两个 dhcp_provider 选项,控制平面的图表。

参考资料