[openstack-dev] [heat] [scheduler] Bringing things together for Icehouse (now featuring software orchestration)
Clint Byrum
clint at fewbar.com
Wed Sep 25 06:46:57 UTC 2013
Excerpts from Mike Spreitzer's message of 2013-09-24 22:03:21 -0700:
> Let me elaborate a little on my thoughts about software orchestration, and
> respond to the recent mails from Zane and Debo. I have expanded my
> picture at
> https://docs.google.com/drawings/d/1Y_yyIpql5_cdC8116XrBHzn6GfP_g0NHTTG_W4o0R9U
> and added a companion picture at
> https://docs.google.com/drawings/d/1TCfNwzH_NBnx3bNz-GQQ1bRVgBpJdstpu0lH_TONw6g
> that shows an alternative.
>
> One of the things I see going on is discussion about better techniques for
> software orchestration than are supported in plain CFN. Plain CFN allows
> any script you want in userdata, and prescription of certain additional
> setup elsewhere in cfn metadata. But it is all mixed together and very
> concrete. I think many contributors would like to see something with more
> abstraction boundaries, not only within one template but also the ability
> to have modular sources.
>
Yes please. Orchestrate things, don't configure them. That is what
configuration tools are for.
There is a third stealth-objective that CFN has caused to linger in
Heat. That is "packaging cloud applications". By allowing the 100%
concrete CFN template to stand alone, users can "ship" the template.
IMO this marrying of software assembly, config, and orchestration is a
concern unto itself, and best left outside of the core infrastructure
orchestration system.
> I work closely with some colleagues who have a particular software
> orchestration technology they call Weaver. It takes as input for one
> deployment not a single monolithic template but rather a collection of
> modules. Like higher level constructs in programming languages, these
> have some independence and can be re-used in various combinations and
> ways. Weaver has a compiler that weaves together the given modules to
> form a monolithic model. In fact, the input is a modular Ruby program,
> and the Weaver compiler is essentially running that Ruby program; this
> program produces the monolithic model as a side effect. Ruby is a pretty
> good language in which to embed a domain-specific language, and my
> colleagues have done this. The modular Weaver input mostly looks
> declarative, but you can use Ruby to reduce the verboseness of, e.g.,
> repetitive stuff --- as well as plain old modularity with abstraction. We
> think the modular Weaver input is much more compact and better for human
> reading and writing than plain old CFN. This might not be obvious when
> you are doing the "hello world" example, but when you get to realistic
> examples it becomes clear.
>
> The Weaver input discusses infrastructure issues, in the rich way Debo and
> I have been advocating, as well as software. For this reason I describe
> it as an integrated model (integrating software and infrastructure
> issues). I hope for HOT to evolve to be similarly expressive to the
> monolithic integrated model produced by the Weaver compiler.
>
Indeed, we're dealing with this very problem in TripleO right now. We need
to be able to compose templates that vary slightly for various reasons.
A ruby DSL is not something I think is ever going to happen in
OpenStack. But python has its advantages for DSL as well. I have been
trying to use clever tricks in yaml for a while, but perhaps we should
just move to a client-side python DSL that pushes the compiled yaml/json
templates into the engine.
More information about the OpenStack-dev
mailing list