BootFromISO


 * Launchpad Entry: NovaSpec:iso-boot
 * Created:
 * Contributors:

Summary
Boot from ISO allows OpenStack to create VMs that are booted from ISO-based images. A blank hard drive is also attached with parameters consistent with the VM’s flavour.

Release Note
Boot from ISO allows OpenStack to create VMs that are booted from ISO-based images. In addition to a CDROM containing the ISO image, a blank hard drive is attached with parameters consistent with the VM’s flavour. The ISO-image used should have been uploaded to Glance with a DISK_FORMAT set to 'iso'.

Rationale
The feature is needed to deal with licensing constraints for commercial operating systems. Redistribution restrictions limit the ability to trade in modified software images. E.g. purchasers of MS Windows licenses may create customized images using the ISO install as a starting point, but they cannot redistribute these images under available licensing schemes. Thus, a feature is required that allows a VM to be booted from an ISO, and that VM’s disk image prepared for bulk use.

User stories
A user wants to create a Microsoft Windows golden image that can be used to create multiple VMs. The starting point is an ISO containing the Windows installation that the user is able license. Using “Boot From ISO”, the Windows Installation can be triggered. The user is then free to guide the installation to completion, install guest agent software necessary for network/key injection, and then apply Microsoft’s sysprep, which causes new VMs created from this image to generate a unique security ID for the operating system on first boot.

See Assumptions section below for additional prerequisites for this user story.

Assumptions
GUI console access is available prior to network injection. The operating system installation executes before the platform has a network address, so it is not possible to use the operating system’s remote access facilities. During this installation, a GUI console still has to be available so that installation steps requiring user interaction can be completed.

The existing Creating Image functionality is sufficient for capturing a golden image.

At this stage, only xenapi backend will be supported to simplify the first implementation.

Design
Add the DISK_FORMAT type 'iso' to the acceptable types loaded by Glance. This will signal to Nova that the image is to be attached as a read only cdrom block device, rather than as a read/write hard disk. Extending DISK_FORMAT provides for better parameter checking than custom properties, because DISK_FORMAT values can be screened.

Add code path to existing VM create functionality that places an ISO image in a CDROM block device when the boot image has the DISK_FORMAT 'iso', marks this as the boot media, and attaches a hard disk that meets the VM's flavour specification.

Glance Changes (Completed)
This feature touches on Glance’s DISK_FORMAT enumeration. The ability to label an image with DISK_FORMAT ‘iso’ is required to signal to VM spawn code that image requires a CDROM-like boot device.

Nova Changes
This feature touches on VM spawn code. The ‘iso’ DISK_FORMAT signals that a blank disk given by the VM's instance-type properties is attached to a VM along with a CDROM to which the ISO is attached. That VM is set to boot from the CDROM.

Test/Demo Plan
Unit tests must be introduced and a functional test that replicates the use case.

Unresolved issues

 * It would be preferrable to be able to create a Golden Image from the VM that has shutdown. This avoids the Golden Image starting out with recovery mode checks.  This would require the VM to exist for a period after being shutdown.


 * After booting a standard Microsoft Windows ISO, the ephemeral drives are not accessible to the Windows installer, because it does not support VirtIO disks. An additional mechanism is needed to make the VirtIO drivers available so they can be loaded by the installer. Normally, the VirtIO drivers are supplied on another ISO image.