On 03/02/11 14:57 +0200, [email protected] wrote:
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):
Thanks Marios! This seems to be very usefull and save me a lot of time
googling and reading all those docs.
After brief look, I have few suggestions for API:
<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).
We need to add a <os>Linux|Windows</os> field to instance XML
and then decide which method we will choose when creating image.
The bucket thing for Windows could be solved by feature param.
-- 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.
For EBS you just need instance_id and name and there is CreateImage call.
** 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'
As I said, we will need to add new feature for GoGrid (something like
'sandbox') when launching an Instance and some HTTP proper response from
POST /api/images when Instance is not in sandbox.
** 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.
So I guess that we will not support creating images in this 'snapshot' way
for Terremark and RimuHosting at this time.
-- Michal
--
--------------------------------------------------------
Michal Fojtik, [email protected]
Deltacloud API: http://deltacloud.org
--------------------------------------------------------