Booting in UEFI mode

TripleO supports booting overcloud nodes in UEFI mode instead of the default BIOS mode. This is required to use advanced features like secure boot (not covered by this guide), and some hardware may only feature UEFI support.

Configuring nodes

Depending on the driver, nodes have to be put in the UEFI mode manually or the driver can put them in it. For example, manual configuration is required for ipmi (including pxe_ipmitool) and idrac (including pxe_drac) drivers, while ilo (including pxe_ilo) and irmc (starting with the Queens release) drivers can set boot mode automatically.

Independent of the driver, you have to configure the UEFI mode manually, if you want introspection to run in it.

Manual configuration is usually done by entering node’s system setup and changing boot setting there.

Introspection

The introspection process is flexible enough to automatically detect the boot mode of the node. The only requirement is iPXE: TripleO currently does not support using PXE with UEFI. Make sure the following options are enabled in your undercloud.conf (they are on by default):

ipxe_enabled = True

Then you can run introspection as usual.

Deployment

Starting with the Pike release, the introspection process configures bare metal nodes to run in the same boot mode as it was run in. For example, if introspection was run on nodes in UEFI mode, ironic-inspector will configure introspected nodes to deploy in UEFI mode as well.

Here is how the properties field looks for nodes configured in BIOS mode:

$ baremetal node show <NODE> -f value -c properties
{u'capabilities': u'profile:compute,boot_mode:bios', u'memory_mb': u'6144', u'cpu_arch': u'x86_64', u'local_gb': u'49', u'cpus': u'1'}

Note that boot_mode:bios capability is set. For a node in UEFI mode, it will look like this:

$ baremetal node show <NODE> -f value -c properties
{u'capabilities': u'profile:compute,boot_mode:uefi', u'memory_mb': u'6144', u'cpu_arch': u'x86_64', u'local_gb': u'49', u'cpus': u'1'}

You can change the boot mode with the following command (required for UEFI before the Pike release):

$ baremetal node set <NODE> --property capabilities=profile:compute,boot_mode:uefi

Warning

Do not forget to copy all other capabilities, e.g. profile and boot_option if present.

Finally, you may configure your flavors to explicitly request nodes that boot in UEFI mode, for example:

$ openstack flavor set --property capabilities:boot_mode='uefi' compute

Then proceed with the deployment as usual.