Hi All,

I had a great chat with Nirmal on IRC today. I got a good feel for what it will 
take to add Rackspace support to Stratos. Here are the work items and stumbling 
blocks we identified.

1. Get Stratos code and IDE setup (Done).

2. Learn how to deploy Stratos as a user.

3. Learn how to deploy Stratos as a developer from an IDE to test changes to 
the Cloud Controller (CC).

4. Create a Cartridge (i.e. an Image) [1] for Rackspace.

Intermediate stumbling block here is that Rackspace doesn't support customized 
public images but it does support customized private images. That means we'll 
have to provide a guide for users to create an Image that will work with 
Stratos. FYI, Rackspace users can't share images but a user can share an images 
with it's sub-users.

Cartridge creation could be eased by use of Rackspace Deployments [2] but it 
would take time to get up to speed on that too.

5. Implement a RackspaceIaas by extending 
org.apache.stratos.cloud.controller.interfaces.Iaas. 

Minor stumbling block here is that Rackspace doesn't have floating/elastic IPs. 
Not really a big deal. Picking up the auto assigned public IP after the 
instance has started will suffice. Iaas.associateAddress() will need to return 
an empty String.

6. Get the Stratos payload into the Cartridge instance.

Major stumbling block here is that Rackspace doesn't support cloud-init like 
functionality. Servers can be created with something similar known as 
Personality [3] but it's pretty limited.

We could hack something together so that the Image has a script that expects a 
URL (or some other data) in the Personality file that directs it to download 
the payload from the CC. This means something would have to be built into the 
CC to allow this download of the payload file.

This was just our initial stab at the problem. Suggestions or alternatives are 
welcome.

7. Security

Rackspace supports key pairs so that's okay.

Intermediate stumbling block here is that Rackspace doesn't support security 
groups. We might have to lock down the machines manually with iptables or 
something. Here's the list of ports that Stratos uses [4].

8. Documentation.

User and developer documentation

9. Examples.

Examples on how to use it.


Can anyone see anything we've missed? 

Are there any assumptions hidden in here?

As the Rackspace cloud evolves, some of these pain points will go away. But for 
now, this is what we have to deal with.

Thanks,
Everett


[1] https://cwiki.apache.org/confluence/display/STRATOS/Creating+a+Cartridge
[2] 
http://www.rackspace.com/blog/automate-your-deployments-quickly-easily-launch-your-app-in-the-rackspace-cloud/
[3] 
http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Server_Personality-d1e2543.html
[4] 
https://cwiki.apache.org/confluence/display/STRATOS/Common+IaaS+Configurations

Reply via email to