Jump to: navigation, search

Difference between revisions of "BootFromISO"

(Added need to load VirtIO drivers as an unresolved issue)
 
(7 intermediate revisions by 2 users not shown)
Line 1: Line 1:
__NOTOC__
+
 
* '''Launchpad Entry''': [[NovaSpec]]:iso-boot or [[GlanceSpec]]:FIXME
+
* '''Launchpad Entry''': NovaSpec:iso-boot
 
* '''Created''':
 
* '''Created''':
* '''Contributors''':  
+
* '''Contributors''':
  
 
== Summary ==
 
== 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.
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.
 
  
 
== Release Note ==
 
== 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 flavourThe ISO-image used should have been uploaded to Glance with a DISK_FORMAT set to 'iso'.
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'.
 
  
 
== 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 that VM’s disk image prepared for bulk use.
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.
 
  
 
== User stories ==
 
== 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.
  
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.
+
See Assumptions section below for additional prerequisites for this user story.
 
 
See Assumptions for additional prerequisites for this user story.
 
  
 
== Assumptions ==
 
== 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.
  
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.
+
The existing Creating Image functionality is sufficient for capturing a golden image.
 
 
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.
 
  
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 hard disk.  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 harddisk.  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.
 
 
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.
 
  
 
== Implementation ==
 
== Implementation ==
 
+
=== Glance Changes (Completed) ===
=== 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.
 
 
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.
 
  
 
=== Nova Changes ===
 
=== 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.
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.
 
  
 
== Test/Demo Plan ==
 
== Test/Demo Plan ==
 
+
Unit tests must be introduced and a functional test that replicates the use case.
Unit tests must be introduced as well as a functional test that replicates the use case.  
 
  
 
== Unresolved issues ==
 
== 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.
  
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.
+
* 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.
 
 
 
----
 
----
 
[[Category:Spec]]
 
[[Category:Spec]]

Latest revision as of 06:37, 2 July 2014

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