<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">On 07/11/2013 10:04 PM, Geoffroy wrote:<br>
</div>
<blockquote
cite="mid:CAOjXrFc00bA7yGQBRjy_RACZwxE4NOOXvtYf2k-eAnH7ui+Nmw@mail.gmail.com"
type="cite">
<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 moz-do-not-send="true"
href="http://foo.org">http://foo.org</a></div>
<div> RackspaceUserName: bar</div>
<div> RackspacePassword: bar</div>
<div> RackspaceAuthUrl: <a moz-do-not-send="true"
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>
<br>
</div>
</blockquote>
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:<br>
<meta http-equiv="content-type" content="text/html;
charset=ISO-8859-1">
<a
href="https://blueprints.launchpad.net/heat/+spec/heat-standalone">https://blueprints.launchpad.net/heat/+spec/heat-standalone</a><br>
<meta http-equiv="content-type" content="text/html;
charset=ISO-8859-1">
<a
href="https://blueprints.launchpad.net/heat/+spec/heat-multicloud">https://blueprints.launchpad.net/heat/+spec/heat-multicloud</a><br>
<br>
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.<br>
<br>
<br>
</body>
</html>