Override PXE options via Glance property¶
The proposal presents the work required to allow PXE boot an image using a specific kernel command line for that image.
Some images requires having specific kernel command line to boot correctly. Currently, Ironic tries to determine things like the root filesystem the image is on (“root=” kernel command line) by getting the UUID of the image filesystem and setting as the root= parameter. This is not correct for all images because some may need to boot from a different root filesystem, e.g:
The device path of its LVM volume [root=/dev/mapper/vg-lv_root]
From one squashfs filesystem [root=live:<path>]
A btrfs subvolume [root=/dev/disk/by-uuid/<UUID of btrfs-root>]
As a real example, the Fedora Atomic uses
requires a kernel command line as the example below to boot properly:
nofb nomodeset vga=normal console=tty1 no_timer_check rd.lvm.lv=atomicos/root root=/dev/mapper/atomicos-root ostree=/ostree/boot.0/fedora-atomic/a002a2c2e44240db614e09e82c/0
In the same way Ironic look at the Glance image properties to find out the
Glance UUID for the image’s kernel and ramdisk (kernel_id and ramdisk_id)
and populate the node’s
instance_info field with the
This spec propose having a new image’s property field called
kernel_cmdline that Ironic will look at, and if present, it will
populate the node’s
instance_info field with a
instance_info.kernel_cmdline is populate Ironic will skip
getting the root partition filesystem UUID and will use the command
line from the
instance_info field instead of the default one in
the template. It’s important to note that the values present at the
pxe_append_params configuration option will still be appended at
the end of the image’s custom kernel command line by Ironic.
Setting the keys in the
instance_info field is important because
it also allows Ironic to operate in standalone mode without Glance.
Always use whole disk images when deploying images that requires a specific kernel command line
Data model impact¶
State Machine Impact¶
REST API impact¶
Client (CLI) impact¶
RPC API impact¶
Driver API impact¶
Nova driver impact¶
Other end user impact¶
Other deployer impact¶
Deployers that wants to deploy an image with a specific kernel command line should know and set it in Glance image’s property prior to trying to boot the image.
- Primary assignee:
- Other contributors:
Make Ironic look at the
kernel_cmdlineimage property in Glance and if present set it to the node’s
When preparing to boot the user’s image, make Ironic check if the node’s
instance_infofield contains a key called
ramdisk_id) and if so, use that kernel command line to boot the image.
Upgrades and Backwards Compatibility¶
The Ironic deploy documentation will be updated to reflect the changes made by this spec.