[openstack-dev] [TripleO] a new Undercloud install driven by Heat

Dmitry Tantsur dtantsur at redhat.com
Fri Aug 5 11:56:32 UTC 2016

On 08/05/2016 01:21 PM, Steven Hardy wrote:
> On Fri, Aug 05, 2016 at 12:27:40PM +0200, Dmitry Tantsur wrote:
>> On 08/04/2016 11:48 PM, Dan Prince wrote:
>>> Last week I started some prototype work on what could be a new way to
>>> install the Undercloud. The driving force behind this was some of the
>>> recent "composable services" work we've done in TripleO so initially I
>>> called in composable undercloud. There is an etherpad here with links
>>> to some of the patches already posted upstream (many of which stand as
>>> general imporovements on their own outside the scope of what I'm
>>> talking about here).
>>> https://etherpad.openstack.org/p/tripleo-composable-undercloud
>>> The idea in short is that we could spin up a small single process all-
>>> in-one heat-all (engine and API) and thereby avoid things like Rabbit,
>>> and MySQL. Then we can use Heat templates to drive the Undercloud
>>> deployment just like we do in the Overcloud.
>> I don't want to sound rude, but please no. The fact that you have a hammer
>> does not mean everything around is nails :( What problem are you trying to
>> solve by doing it?
> I think Dan explains it pretty well in his video, and your comment
> indicates a fundamental misunderstanding around the entire TripleO vision,
> which is about symmetry and reuse between deployment tooling and the
> deployed cloud.

Well, except for you need some non-openstack starting point, because 
unlike with e.g. ansible installing any openstack service(s) does not 
end at "dnf install <package-name>".

> The problems this would solve are several:
> 1. Remove divergence between undercloud and overcloud puppet implementation
> (instead of having an undercloud specific manifest, we reuse the *exact*
> same stuff we use for overcloud deployments)

I'm not against reusing puppet bits, I'm against building the same heavy 
abstraction layer with heat around it.

> 2. Better modularity, far easier to enable/disable services

Why? Do you expect enabling/disabling Nova, for example? In this regard 
undercloud is fundamentally different from overcloud: for the former we 
have a list of required services and a pretty light list of optional 

> 3. Get container integration "for free" when we land it in the overcloud
> 4. Any introspection and debugging workflow becomes identical between the
> undercloud and overcloud

I would love a defined debugging workflow for the overcloud first..

> 5. We remove dependencies on a bunch of legacy scripts which run outside of
> puppet

If you mean instack-undercloud element, we're getting rid of them 
anyway, no?

> 6. Whenever someone lands support for a new service in the overcloud, we
> automatically get undercloud support for it, completely for free.

Again, why? A service won't integrate itself into the deployment. And to 
be honest, the amount of options TripleO has already cases real world 
problems. I would rather see a well defined set of functionality for it..

> 7. Potential for much easier implementation of a multi-node undercloud

Ideally, I would love to see:

  for node in nodes:
    ssh $node puppet apply blah-blah

Maybe we're not there, but it only means we have to improve our puppet 

>> Undercloud installation is already sometimes fragile, but it's probably the
>> least fragile part right now (at least from my experience) And at the very
>> least it's pretty obviously debuggable in most cases. THT is hard to
>> understand and often impossible to debug. I'd prefer we move away from THT
>> completely rather than trying to fix it in one more place where heat does
>> not fit..
> These are some strong but unqualified assertions, so it's hard to really
> respond.

We'll talk about "unqualified" assertions the next time I'll try to get 
answers on #tripleo after seeing error messages like "controller_step42 
failed with code 1" ;)

> Yes, there is complexity, but it's a set of abstractions which
> actually work pretty well for us, so there is value in having just one set
> of abstractions used everywhere vs special-casing the undercloud.

There should be a point where we stop. What entity is going to install 
heat to install undercloud (did I just say "seed")? What will provide HA 
for it? Authentication, templates storage and versioning? How do you 
reuse the same abstractions (that's the whole point after all)?

> Re moving away from THT completely, this is not a useful statement -
> yes, there are alternative tools, but if you were to remove THT and just
> use some other tool with Ironic, the result would simply not be TripleO.
> There would be zero migration/upgrade path for existing users and all
> third-party integrations (and our API/UI) would break.

I don't agree it would not be TripleO. OpenStack does not end on heat 
templates, some deployments don't even use heat.

> FWIW I think this prototyping work is very interesting, and I'm certainly
> keen to get wider (more constructive) feedback and see where it leads.
> Thanks,
> Steve
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

More information about the OpenStack-dev mailing list