Hey Michal,
here's a copy/paste from the notes I made about snapshots back in July -
might be useful to have this in one place/save some time looking at the
APIs (AWS, Rackspace, Rimu, Gogrid, Terremark):
<PAST> :
Q. Which of our currently supported clouds allows 'register custom Image
from cloud storage', or, 'save/snapshot an Instance as a new Image'
-----------------------------------------------------------------
--i--> Amazon AWS allows you to register an object in S3 as an Image in
EC2 [4] (Rackspace 'coming soon' [5])
** The process of 'save this Instance as an Image in S3' is termed
'bundling'
** PROBLEM: different procedure for Windose vs Linux images [6].
-- For Windows you use the AWS REST API 'BundleInstance' call where you
specify the S3 bucket to upload to (amongst other things).
-- For Linux you must install the 'AMI Tools' command-line utilities
[7] on the Instance you wish to bundle and then 'ec2-bundle-image'.
Confusingly the actual upload is done with 'ec2-upload-bundle' which
takes the S3 bucket name as a parameter.
** In both cases and after bundling is complete you register the
newly created S3 object as an Image for EC2 using the REST API
'RegisterImage' call.
--ii-> Rackspace allows you to snapshot a running Instance [5]
** This is done through a REST API call (POST /images) where you
specify the serverid (Instance) that is to be saved.
** Here there is no seperation between 'make snapshot' and 'upload
to cloud storage' - i.e. cannot export a server image [8].
** Snapshots stay 'attached to the server' [9] (i.e. saved locally?).
** Once process complete the image is available for booting a
server [5].
** 'Custom Image Upload' is in the Cloud Server API Roadmap [5].
-iii-> Gogrid allows you to save a 'MyGSI - Gogrid Server Image' from
your own, preconfigured 'sandbox server'
** You create a MyGSI from a configured, running 'image sandbox
server' and the new image is added to Gogrid's cloud storage [11]
** Weirdly this cloud storage is not exposed at all via the API
** The API call is grid.image.save [12] - you create a new 'image
sandbox server' using 'grid.server.add', configure it and run the 'prep
scripts' and then call the save. Once complete the new MyGSI is
available in your list of images.
--iv-> Rimuhosting allows you to clone an existing server and deploy a
new server from that [10]
** However, the clone must be deployed straight away - you cannot
save as an image for later instantiation.
** A chat with support confirmed this - you *can* save an image for
later use but only by submitting a support ticket (i.e. nothing in the
api or the web 'management console' to support this).
--v--> Terremark VCloud Express allows you to 'clone' an existing server
(a 'vapp') [13] but you cannot save this as an Image (a 'vapp template').
** Similar to the rimuhosting situation - can clone an existing
server as another server, but not as an Image
** POST https://{Terremark URI}/vdc/{vDC ID}/action/clonevapp - you
specify the vApp id to be cloned within the request body.
AWS:
[1] http://aws.amazon.com/documentation/s3/
[2] http://www.supersimplestorageservice.com/
[4] http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/
[6]
http://developer.amazonwebservices.com/connect/thread.jspa?messageID=107847𚕇
[7]
http://developer.amazonwebservices.com/connect/entry.jspa?externalID=368&categoryID=88
RACKSPACE:
[3] http://www.rackspacecloud.com/cloud_hosting_products/files/api
[5] http://docs.rackspacecloud.com/servers/api/cs-devguide-latest.pdf
[8] http://www.rackspacecloud.com/cloud_hosting_products/servers/faq
[9] http://www.rackspacecloud.com/cloud_hosting_products/servers/pricing
RIMUHOSTING:
[10]
http://apidocs.rimuhosting.com/jaxbdocs/com/rimuhosting/jaxrsorders/JAXRSOrders.NewVPSRequest.html
GOGRID:
[11] http://wiki.gogrid.com/wiki/index.php/Cloud_Storage:Cloud_Storage
[12] http://wiki.gogrid.com/wiki/index.php/API:grid.image.save
TERREMARK:
[13]
https://community.vcloudexpress.terremark.com/en-us/product_docs/w/wiki/6-vcloud-express-api-documention.aspx
On 03/02/11 13:45, [email protected] wrote:
Hi,
This patch will add support for creating images from running or stopped
instances in Amazon EC2. EC2 support 'CreateImage' call for all EBS
instances.
Deltacloud API implements that in this way:
POST /api/images
Parameters: { :instance_id => 'i-123123', :name => 'image name' }
I checked GoGrid and they have something similar[1] for 'sandbox'
instances. Which means that we will need to add some feature to
instances collection to create 'sandbox' instance in GoGrid.
I didn't check Rackspace but Ovi said that they have something very
similar.
Please let me know what do you think about this approach.
PS: I attached a working example for EC2, *but* you need to have patched
gem installed (you can grab one from my github account[2]). To install it:
git clone git://github.com/mifo/aws.git
git checkout myupstream
gem build aws.gemspec
gem uninstall aws
gem install --local aws.gem
Or wait until Appoxy's integrate my patch to upstream gem.
[1] http://wiki.gogrid.com/wiki/index.php/API:grid.image.save
[2] https://github.com/mifo/aws/tree/myupstream