Application Static Image Provisioning

Name (Title) Cloud Application Static Image Compute Provisioning
Description Simple provisioning of new subscriber compute resources into the cloud
Alias image provisioning, static provisioning, Deploy Everything as an Image or Golden Image
Intent This pattern deploys previously constructed and configured server images (includes OS kernel, packages, agents, etc based on standard operating system deployment pattern (or SOE, standard operating environment model) into the cloud with minimal customisation. It is useful when the application requires few images and the code base is relatively static. Desire to get a OS deployed and configured on server so it can run applications
Motivation This pattern is needed for applications with low complexity or where there are few programming/script skills available. Based on a golden (virtual) image(s), this method is easy to manage and deploy as it integrates well into existing management processes.
Applicability This pattern is useful when little customization is needed and the application changes infrequently. It is especially useful for appliances. It is inappropriate for architectures with rapid software lifecycles (image creation can become burdensome and inhibit provisioning). It is also inappropriate for architectures that require the ability to change running images, as this is not automated in this pattern.
Structure This diagram hides most of the cloud provider complexity (such as resource allocation, interaction with the image catalogue, etc) as it is hidden from the application deployer.
Participants
  • Management Server (console)
  • Cloud interface
  • new compute instance
Collaboration
  1. The management server calls for new compute resource through the cloud API call to the cloud computing infrastructure. Within the payload of the server instantiate API call is both server image identifier and executable code (i.e. script) or data for provisioning.
  2. The cloud computing infrastructure instantiates a new compute resource with the specified server image.
  3. The new server instance starts up and executes the payload script or uses the payload data to do any customisation needed. This is very dependent on the cloud infrastructure implementation.
  4. The image functions more or less unchanged until terminated by the console by way of the cloud interface.
Consequences
  • This is a one-time only provisioning (i.e. provisioning only happens at server instantiation time). To re-provision, you must terminate instance and restart a new one (or login by hand).
  • There is a limit to complexity of provisioning: many cloud implementation limit per image customisation data (i.e. the payload on EC2's runInstance call) and error checking can be difficult.
  • Debugging is can be very difficult and time-consuming (constant reinstantiating new images).
  • This provisioning pattern is not idempotent (each time you deploy, you get another image).
  • Potentially large network transfers due to the uploading of new golden images for each provisioning cycle.
  • Can be slow to provision minor change.
  • Recommend model to create SOE/base golden image, and may mask some complexities.
Implementation This is a very simple example in Ruby on Amazon's EC2 service:
#!/usr/bin/env ruby

require 'rubygems'
require 'ec2'

ACCESS_KEY_ID = ENV['AWS_KEY_ID']
SECRET_ACCESS_KEY = ENV['AWS-SEKRIT-ACCESS-KEY']
IMAGE_ID = 'ami-018e6b68'  # identifies image to be launched

ec2 = EC2::Base.new(
  :access_key_id => ACCESS_KEY_ID,
  :secret_access_key => SECRET_ACCESS_KEY) # creates connection to cloud

ec2.run_instances(
  :image_id => IMAGE_ID,
  :min_count => 1,
  :max_count => 5,
  :key_name => nil,
  :group_id => [],
  :user_data => nil,
  :addressing_type => "public",
  :instance_type => "m1.small",
  :availability_zone => nil) # launches 1 to 5 small instances of IMAGE_ID
Known uses This pattern is used extensively outside of cloud computing: VMware, OpsCenter, Norton Ghost, etc.
Related patterns Pull provisioning, Push provisioning
Author Ken Pepple <ken.pepple at sun dot com>, Jason Carolan <jason.carolan at sun dot com>
Reviewer John Stanford <john dot stanford at sun dot com>

Labels

cloud_pattern cloud_pattern Delete
developer developer Delete
provisioning provisioning Delete
scalability scalability Delete
availability availability Delete
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.

Sign up or Log in to add a comment or watch this page.


The individuals who post here are part of the extended Sun Microsystems community and they might not be employed or in any way formally affiliated with Sun Microsystems. The opinions expressed here are their own, are not necessarily reviewed in advance by anyone but the individual authors, and neither Sun nor any other party necessarily agrees with them.

Copyright 1994-2009 Sun Microsystems, Inc.
Powered by Atlassian Confluence
Sun Guidelines on Public Discourse Privacy Policy Terms of Use Trademarks Site Map Employment Investor Relations Contact