[RFE] Dynamic boot configuration API
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Ironic |
Triaged
|
Wishlist
|
Unassigned |
Bug Description
In a standalone multi-conductor environment, where the dnsmasq configuration is static and does not use any node-specific information, there is no way for a networking booting node to learn its conductor. The conductor it will reach will probably be the one next to dnsmasq. It may or may not have the files required to boot the node.
Several approaches have been proposed to tackle this problem. https:/
New unauthenticated API will be added to Ironic:
GET /v1/boot/
where <MAC> is a valid MAC address (acceptable in several formats)
<FILE> is a file name, only "boot.ipxe" supported initially.
The behavior will be as follows:
1. Find the node by the provided MAC addresses. We will probably need a new lightweight database API to find only the most necessary fields in the most efficient way.
2. If the node is not found, return HTTP 404.
3. If the node is invalid state (see below), return HTTP 404.
4. Else, find the correct conductor and call the new RPC get_boot_
On the conductor:
5. After basic checks, the call is forwarded to driver.
The iPXE implementation:
6. If the file name is not "boot.ipxe", raise UnsupportedDriv
7. Otherwise, return the configuration with the right IP addresses. At least initially, it will be done by reading the file from the disk. This will ensure a very lean first implementation.
Ironic is currently capable of generating the root boot.pxe. This code will be updated to optionally use the new API.
The feature will be configured by these options:
* [pxe]ipxe_
* [pxe]ipxe_
* [api]restrict_
Is there any way to make this so it is not iPXE specific? I'm thinking GRUB based boot as well would benefit from this, and given the HTTP boot interfaces are in flight, it should all the same code under the hood anyway.