automate-uefi-bios-iso-creation

https://blueprints.launchpad.net/ironic/+spec/automate-uefi-bios-iso-creation

This spec proposes to add support creation of dual(bios+uefi) boot ISO automatically.

Problem description

Today, a dual-mode boot ISO has to be created manually, uploaded to Glance, and associated with the instance image in Glance by setting its “boot_iso” image property. The deploy image can be modified using GRUB on runtime. This is required by the iscsi_ilo driver to enable UEFI boot mode.

Proposed change

This spec proposes to use GRUB to create the dual-mode boot ISO on the fly in ironic/common/images.py. This image will be uploaded to swift and associated with the node for which it was created, and will not be shared between instances, even when using the same instance image. When the instance is deleted, the boot_iso file is deleted from swift. The steps would be as follows:

  1. Create isolinux config file.

  2. Create the grub config files.

  3. Create the bootx64.efi.

  4. create vfat image efiboot.img

  5. Create ISO using mkisofs with the following options added “-eltorito-alt-boot -e isolinux/efiboot.img” to existing syntax.

  6. The boot iso is created by the driver and uploaded at the swift container.

when node is torn down, the boot iso is deleted by the driver.

Alternatives

To boot up in UEFI mode, the deployer can create the ISO manually using disk-image-builder utility disk-image-create and upload on glance.

Data model impact

None.

REST API impact

None.

RPC API impact

None.

Driver API impact

None.

Nova driver impact

None.

Security impact

None.

Other end user impact

None.

Scalability impact

None.

Performance Impact

None.

Other deployer impact

The boot iso can be created and uploaded to the swift on the fly when deploy is invoked for iscsi_ilo driver i.e. current manual step for updating the deploy image with the boot iso will not be required after the enhancement.

Developer impact

None.

Implementation

Assignee(s)

Primary assignee:

agarwalnisha1980

Work Items

In /opt/stack/ironic/ironic/common/images.py file,

  • To create the conf file for UEFI

  • To enhance the function create_isolinux_image() for creating UEFI capable ISO.

  • To remove the check in /opt/stack/ironic/ironic/drivers/modules/ilo/deploy.py for erroring out when the deploy image doesn’t has the boot_iso uuid updated.

Dependencies

None.

Testing

The unit tests will be added/updated as required for the code.

Upgrades and Backwards Compatibility

The iscsi_ilo driver will support both the manual and automated boot iso methods. By default, if the image already has the “boot_iso” property populated, the driver will consume the boot_iso from it.

Documentation Impact

None.

References

None.