[openstack-dev] [Heat] HOT Software orchestration proposal for workflows

Angus Salkeld asalkeld at redhat.com
Thu Oct 10 00:25:17 UTC 2013


On 09/10/13 19:31 +0100, Steven Hardy wrote:
>On Wed, Oct 09, 2013 at 06:59:22PM +0200, Alex Rudenko wrote:
>> Hi everyone,
>>
>> I've read this thread and I'd like to share some thoughts. In my opinion,
>> workflows (which run on VMs) can be integrated with heat templates as
>> follows:
>>
>>    1. workflow definitions should be defined separately and processed by
>>    stand-alone workflow engines (chef, puppet etc).
>
>I agree, and I think this is the direction we're headed with the
>software-config blueprints - essentially we should end up with some new
>Heat *resources* which encapsulate software configuration.

Exactly.

I think we need a software-configuration-aas sub-project that knows
how to take puppet/chef/salt/... config and deploy it. Then Heat just
has Resources for these (OS::SoftwareConfig::Puppet). 

We should even move our WaitConditions and Metadata over to that 
yet-to-be-made service so that Heat is totally clean of software config.

How would this solve ordering issues:

resources:
  config1:
    type: OS::SoftwareConfig::Puppet
    hosted_on: server1
    ...
  config2:
    type: OS::SoftwareConfig::Puppet
    hosted_on: server1
    depends_on: config3
    ...
  config3:
    type: OS::SoftwareConfig::Puppet
    hosted_on: server2
    depends_on: config1
    ...
  server1:
    type: OS::Nova::Server
    ...
  server2:
    type: OS::Nova::Server
    ...


Heat knows all about ordering:
It starts the resources:
server1, server2
config1
config3
config2

There is the normal contract in the client:
we post the config to software-config-service
and we wait for the state == ACTIVE (when the config is applied)
before progressing to a resource that is dependant on it.

-Angus

>
>IMO there is some confusion around the scope of HOT, we should not be
>adding functionality to it which already exists in established config
>management tools IMO, instead we should focus on better integration with
>exisitng tools at the resource level, and identifying template interfaces
>which require more flexibility (for example serialization primitives)
>
>>    2. the HOT resources should reference workflows which they require,
>>    specifying a type of workflow and the way to access a workflow definition.
>>    The workflow definition might be provided along with HOT.
>
>So again, I think this acatually has very little to do with HOT.  The
>*Heat* resources may define software configuration, or possibly some sort
>of workflow, which is acted upon by $thing which is not Heat.
>
>So in the example provided by the OP, maybe you'd have a Murano resource,
>which knows how to define the input to the Murano API, which might trigger
>workflow type actions to happen in the Murano service.
>
>>    3. Heat should treat the orchestration templates as transactions (i.e.
>>    Heat should be able to rollback in two cases: 1) if something goes wrong
>>    during processing of an orchestration workflow 2) when a stand-alone
>>    workflow engine reports an error during processing of a workflow associated
>>    with a resource)
>
>So we already have the capability for resources to recieve signals, which
>would allow (2) in the asynchronous case.  But it seems to me that this is
>still a serialization problem, ie a synchronous case, therefore (2) is just
>part of (1).
>
>E.g
>
>- Heat stack create starts
>- Murano resource created (CREATE IN_PROGRESS state)
>- Murano workdlow stuff happens, signals Heat with success/failure
>- Murano resource transitions to either COMPLETE or FAILED state
>- If a FAILED state happened, e.g on update, we can roll back to the
>  previous stack definition (this is already possible in Heat)
>
>>    4. Heat should expose an API which enables basic communication between
>>    running workflows. Additionally, Heat should provide an API to workflows
>>    that allows workflows to specify whether they completed successfully or
>>    not. The reference to these APIs should be passed to the workflow engine
>>    that is responsible for executing workflows on VMs.
>
>I personally don't think this is in scope for Heat.  We already have an API
>which exposes the status of stacks and resources.  Exposing some different
>API which describes a workflow implemented by a specific subset of resource
>types makes no sense to me.
>
>>
>> Pros of each point:
>> 1 & 2 - keeps Heat simple and gives a possibility to choose the best
>> workflows and engines among available ones.
>> 3 - adds some kind of all-or-nothing semantics improving the control and
>> awareness of what's going on inside VMs.
>> 4 - allows workflow synchronization and communication through Heat API.
>> Provides the error reporting mechanism for workflows. If a workflow does
>> not need this functionality, it can ignore it.
>
>IMHO (4) is very much a step too far, and is not well aligned with the
>current interfaces provided by Heat.
>
>I'm really keen to further discuss the use-cases here, but if possible, it
>would be helpful if folks can describe their requirements in less abstract
>terms, and with reference to our existing interfaces and template model.
>
>> These thoughts might show some gaps in my understanding of how Heat works,
>> but I would like to share them anyway.
>
>You've raised some good points, thanks.
>
>I'm really keen to further discuss the use-cases here, but if possible, it
>would be helpful if folks can describe their requirements in less abstract
>terms, and with reference to our existing interfaces and template model.
>That way we can start defining what is actually missing to support specific
>use-cases.
>
>So far I see the following emerging as definite requirements:
>- Better/more flexible native serialization interfaces (possbly HOT
>  additions)
>- Better/more flexible *resources* which encapsulate software configuration
>  on instances, probably with the flexibility of applying more than one
>  config to an instance (not necessarily related to any HOT changes at all)
>
>Thanks,
>
>Steve
>
>_______________________________________________
>OpenStack-dev mailing list
>OpenStack-dev at lists.openstack.org
>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



More information about the OpenStack-dev mailing list