As per the weekly meeting today [1] we have agreed to add a new section to the spec template for changes that affect the IPA ramdisk. [1] http://eavesdrop.openstack.org/meetings/ironic/2016/ironic.2016-05-23-17.00.log.txt Change-Id: I0f62e233dc7f2ad3e9940439f8ad7740de5e65c9
4.2 KiB
Override PXE options via Glance property
https://bugs.launchpad.net/ironic/+bug/1526409
The proposal presents the work required to allow PXE boot an image using a specific kernel command line for that image.
Problem description
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 lvm
and
ostree
. It 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
Proposed change
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 kernel
and ramdisk
keys.
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
kernel_cmdline
key.
If the 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.
Alternatives
Always use whole disk images when deploying images that requires a specific kernel command line
Data model impact
None
State Machine Impact
None
REST API impact
None
Client (CLI) impact
None
RPC API impact
None
Driver API impact
None
Nova driver impact
None
Ramdisk impact
N/A
Security impact
None
Other end user impact
None
Scalability impact
None
Performance Impact
None
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.
Developer impact
None
Implementation
Assignee(s)
- Primary assignee:
-
lucasagomes <lucasagomes@gmail.com>
- Other contributors:
-
None
Work Items
- Make Ironic look at the
kernel_cmdline
image property in Glance and if present set it to the node'sinstance_info
field - When preparing to boot the user's image, make Ironic check if the
node's
instance_info
field contains a key calledkernel_cmdline
(along withkernel_id
andramdisk_id
) and if so, use that kernel command line to boot the image.
Dependencies
None
Testing
- Unit Tests
Upgrades and Backwards Compatibility
None
Documentation Impact
The Ironic deploy documentation will be updated to reflect the changes made by this spec.