← Back to team overview

openstack team mailing list archive

[HEAT] orchestration on multiple external Cloud providers

 

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:

parameters:
  HpCloudUserName: foo
  HpCloudPassword: foo
  HpCloudAuthUrl: http://foo.org
  RackspaceUserName: bar
  RackspacePassword: bar
  RackspaceAuthUrl: http://bar.org
resource_registry:
  resources:
    my_instance_1:
      "AWS::EC2::Instance" : "HpCloud::Nova::Compute"
    my_instance_2:
      "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 ?.



Thanks in advance!
Geoffroy

Follow ups