第 3 层或无 DHCP 的 ramdisk 启动¶
通过 PXE 启动节点虽然被普遍支持,但存在一个缺点:它需要节点和控制平面之间的直接 L2 连接才能进行 DHCP。使用虚拟介质,可以避免不可靠的 TFTP 协议,甚至完全避免 DHCP。
当按照以下说明为节点提供网络数据时,生成的虚拟介质 ISO 也将作为 configdrive 提供,网络数据将存储在标准的 OpenStack 位置。
在创建部署 ramdisk 时,需要使用 simple-init 元素。 Glean 工具将查找标记为 config-2 的介质。如果找到,将读取其中的网络信息,并相应地配置节点的网络堆栈。
ironic-python-agent-builder -o /output/ramdisk \
debian-minimal -e simple-init
警告
基于使用 NetworkManager 的发行版的 ramdisk 需要 Glean 1.19.0 或更高版本才能正常工作。
注意
如果需要,某些接口仍然可以配置为使用 DHCP。
硬件类型支持¶
已知以下硬件类型支持此功能
配置网络数据¶
当 Bare Metal 服务在 OpenStack 中运行时,无需额外配置 - 网络配置将从网络服务中获取。
或者,用户可以构建并通过 network_data 字段以 JSON 形式传递网络配置给节点。基于节点的配置优先于网络服务生成的配置,并且在独立模式下也能工作。
baremetal node set --network-data ~/network_data.json <node>
一个网络数据示例
{
"links": [
{
"id": "port-92750f6c-60a9-4897-9cd1-090c5f361e18",
"type": "phy",
"ethernet_mac_address": "52:54:00:d3:6a:71"
}
],
"networks": [
{
"id": "network0",
"type": "ipv4",
"link": "port-92750f6c-60a9-4897-9cd1-090c5f361e18",
"ip_address": "192.168.122.42",
"netmask": "255.255.255.0",
"network_id": "network0",
"routes": []
}
],
"services": []
}
注意
某些字段与端口信息冗余。我们正在研究简化格式,但目前,所有这些字段都是必需的。
您需要在部署的镜像中支持网络数据,例如通过预安装 cloud-init 或 Glean (大多数云镜像都具有前者)。然后,您可以在部署时提供网络数据,例如
baremetal node deploy <node> \
--config-drive "{\"network_data\": $(cat ~/network_data.json)}"
某些首次启动服务,例如 Ignition,不支持网络数据。您可以将它们的配置作为用户数据的一部分提供
baremetal node deploy <node> \
--config-drive "{\"user_data\": \"... ignition config ...\"}"
在配置网络之外进行部署¶
如果您需要将使用配置网络的传统部署与通过 L3 进行的虚拟介质部署结合起来,您可能需要为远程节点提供替代 IP 地址以进行连接
[deploy]
http_url = <HTTP server URL internal to the provisioning network>
external_http_url = <HTTP server URL with a routable IP address>
您可能还需要覆盖回调 URL,该 URL 通常从服务目录中获取或在 [service_catalog] 部分中配置
[deploy]
external_callback_url = <Bare Metal API URL with a routable IP address>
如果您需要为每个节点指定特定的 URL,可以使用节点属性 driver_info[external_http_url]。使用后,它将覆盖配置文件中的 deploy.http_url 和 deploy.external_http_url 设置。
baremetal node set node-0 \
--driver-info external_http_url="<your_node_external_url>"