openstack team mailing list archive
Mailing list archive
Re: [HEAT] orchestration on multiple external Cloud providers
On 07/11/2013 10:04 PM, Geoffroy wrote:
> I am trying to use Heat as an provisioning tool on multiple Cloud
> providers, lets say HpCloud and Rackspace. I got local keystone,
> heat-api and heat-engine servers. My scenario is: if i submit a
> template with 2 compute instances, i want them to be distributed on
> each providers.
> It's a little difficult, because heat-engine reuses my local keystone
> to retrieve the endpoint and credentials, which are different for each
> external providers.
> My guess was to use the Environment to store every external
> credentials in the parameters, and precise in the resource_registry a
> binding for every instances:
> HpCloudUserName: foo
> HpCloudPassword: foo
> HpCloudAuthUrl: http://foo.org
> RackspaceUserName: bar
> RackspacePassword: bar
> RackspaceAuthUrl: http://bar.org
> "AWS::EC2::Instance" : "HpCloud::Nova::Compute"
> "AWS::EC2::Instance" : "Rackspace::Compute::Server"
> Then, i code some new python plugins, that will handle this 2 new
> type, take the corresponding credentials in the environment, and call
> the novaclient with the correct arguments.
> But my problem is that this solution seems overkill, as i will have
> to add a new python class for every type i want to use, multiply by
> the number of externals providers. Even if i can factorize the code,
> in the end i just want to customize the credentials and auth endpoint.
> Do you known if there is a better way to achieve this goal, or simply
> if Heat shouldn't be use for this ?.
There are a few interim steps required before we can handle your
scenario of multiple clouds in a single template. The first steps are to
change API middleware behaviour to not assume heat is installed in a
single integrated openstack:
When they are ready, the HOT template concepts of Environments and
Providers should allow you to implement your HpCloud::Nova::Compute and
Rackspace::Compute::Server as nested stacks so you won't need to code
these in python.