Jump to: navigation, search

Difference between revisions of "BootFromISO"

Line 6: Line 6:
 
== Summary ==
 
== Summary ==
  
Boot from ISO allows [[OpenStack]] to create VMs that are booted from ISO-based images.  A blank harddrive is also attached with parameters consistent with the VMs flavor.
+
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 ==
 
== Release Note ==
  
Boot from ISO allows [[OpenStack]] to create VMs that are booted from ISO-based images.  A blank harddrive is also attached with parameters consistent with the VMs flavorRequires the ISO-image be uploaded with an image of DISK_FORMAT 'iso'.
+
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 flavourThe ISO-image used should have been uploaded to Glance with a DISK_FORMAT set to 'iso'.
  
 
== Rationale ==
 
== 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 prepared for bulk use.  Existing [[OpenStack]] functionailty allows the resulting disk image to be persisted.
+
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 ==
 
== User stories ==
  
A user wants to create a Microsoft Windows golden image that can operate in a virtualisation environment.  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 client software necessary for network inject, e.g. [[XenServer]] Windows Guest Agent, and then apply sysprep so that subsequent VM boots generate a unique security ID for the operating system.
+
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 for additional prerequisites for this user story.
+
See Assumptions section below for additional prerequisites for this user story.
  
 
== Assumptions ==
 
== Assumptions ==
  
GUI console access is available prior to network injection.  Since installs execute before a platform can be customized, a GUI console should be available without the need to modify the guest operating system.
+
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.
  
A golden images do not require that a VM is first shutdown.  With this assumption, we can use the exiting Create Image functionality that is applied to a running VM in order to create a golden image.
+
The existing Creating Image functionality is sufficient for capturing a golden image.
  
It suffices to implement the feature for [[XenServer]] and XCP VMMs at this stage.  With this assumption, we greatly simplify the first implementation.
+
At this stage, only xenapi backend will be supported to simplify the first implementation.
  
 
== Design ==
 
== 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 harddisk.  Extending DISK_FORMAT provides for better parameter checking than custom properties, because DISK_FORMAT values can be screened.
+
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 harddisk that meets the VM's flavor specification.
+
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.
  
 
== Implementation ==
 
== Implementation ==
Line 40: Line 40:
 
=== Glance Changes ===
 
=== Glance Changes ===
  
This feature touches on Glance’s DISK_FORMAT enumeration.  The ability to label and image as ‘iso’ is required to signal to VM spawn code that image requires a CDROM-like boot device.
+
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 ===
 
=== Nova Changes ===
  
This feature touches on VM spawn code.  ‘iso’ images signal 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.
+
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 ==
 
== Test/Demo Plan ==
  
Unit tests must be introduced as well as a functional test that replicates the use case.  
+
Unit tests must be introduced and a functional test that replicates the use case.  
  
 
== Unresolved issues ==
 
== Unresolved issues ==
  
Survey of GUI console capabilities of Diablo has not been carried out.  Nor has existing snapshot mechanism been examined to see if end of VM life image archiving exists or is easily implemented.
+
A graphical console is required that can access a machine that does not have its network stack initialised.  Survey of GUI console capabilities of Diablo has not been carried out.   
 +
Golden Image creation requires a snapshot be taken.  If this can be done while the machine is running, the existing image creation mechanism will suffice for creating Golden Images.  Whether this if is true should be checked.  Alternatively, the machine needs to be stopped before an image can be created.  Whether it is possible to stop a VM and capture it’s disk image should also be checked.
  
 
----
 
----
 
[[Category:Spec]]
 
[[Category:Spec]]

Revision as of 10:38, 18 May 2011

  • 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.

Implementation

Glance Changes

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

A graphical console is required that can access a machine that does not have its network stack initialised. Survey of GUI console capabilities of Diablo has not been carried out. Golden Image creation requires a snapshot be taken. If this can be done while the machine is running, the existing image creation mechanism will suffice for creating Golden Images. Whether this if is true should be checked. Alternatively, the machine needs to be stopped before an image can be created. Whether it is possible to stop a VM and capture it’s disk image should also be checked.