<div dir="ltr">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.<div>
<br></div><div>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.</div><div><br></div><div>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:</div>
<div><br></div><div>parameters:</div><div>  HpCloudUserName: foo</div><div>  HpCloudPassword: foo</div><div>  HpCloudAuthUrl: <a href="http://foo.org">http://foo.org</a></div><div>  RackspaceUserName: bar</div><div>  RackspacePassword: bar</div>
<div>  RackspaceAuthUrl: <a href="http://bar.org">http://bar.org</a></div><div>resource_registry:</div><div>  resources:</div><div>    my_instance_1:</div><div>      "AWS::EC2::Instance" : "HpCloud::Nova::Compute"</div>
<div>    my_instance_2:</div><div>      "AWS::EC2::Instance" : "Rackspace::Compute::Server"</div><div><br></div><div>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.</div>
<div><br></div><div><br></div><div>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.</div>
<div><br></div><div><br></div><div>Do you known if there is a better way to achieve this goal, or simply if Heat shouldn't be use for this ?.</div><div><br></div><div><br></div><div><br></div><div><div>Thanks in advance!</div>
<div>Geoffroy</div></div></div>