Re: [openstack-dev] [heat] non-trivial example - IBM Connections [and Murano]

2014-02-08 Thread Georgy Okrokvertskhov
Hi Mike,

Thank you for clarification. I like your approach with Ruby and I think
this is a right way to solve such tasks like DSL creation. In Murano we use
Yaml and python just to avoid introduction of a whole new language like
Ruby to OpenStack.

As for software configurations in heat, we are eager to have it available
for use. We use Heat in Murano and we want to pass as much as possible work
 to Heat engine. Murano itself is intended to be an Application Catalog for
managing available application packages and focuses on UI and user
experience rather then on deployment details. We still use DSL for several
things, have something working while waiting for Heat implementations, and
to have imperative workflow engine which is useful when you need to
orchestrate complex workflows. The last part is very powerful when you need
to have an explicit control on deployment sequence with conditional
branches orchestration among several different instances. When Mistral will
be available we plan to use its workflow engine for task orchestration.

Again, thank you for sharing the work you are doing in IBM. This is very
good feedback for OpenStack community and helps to understand how OpenStack
components used in enterprise use cases.

Thanks
Georgy


On Sat, Feb 8, 2014 at 10:52 AM, Mike Spreitzer  wrote:

> > From: Georgy Okrokvertskhov 
> > ...
> > Thank you for sharing this. It looks pretty impressive. Could you,
> > please some details about DSL syntax, if it is possible?
>
> I will respond briefly, and pass your request along to the people working
> on that.
>
> In the Weaver language there are distinct concepts for software
> configuration vs. things (such as VMs) that can host software configs.  As
> in the current software config work, there are distinct concepts for
> defining a software configuration vs. applying one to some particular
> infrastructure.  Weaver supposes that local configuration is described in
> Chef; Weaver adds a way of connecting chef variables across machines.  So
> you see, there are a lot of similarities with the current work on software
> config, which I support.
>
> Weaver takes advantage of the power of Ruby metaprogramming to add pretty
> natural and concise constructs for modeling infrastructure and software
> config.  The source does not look like it is one level off, it looks like
> it is describing a thing rather than describing how to build a model of the
> thing (even though that is what it is actually doing).
>
> Embedding in Ruby adds powerful and familiar support for abstraction and
> customized repetition in descriptions of distributed systems.  This is
> going to be hard to do nicely in a language (regardless of whether it uses
> JSON or YAML syntax) that is primarily for data representation.  One of the
> points of sharing this example was to show a system for which you would
> like such power.
>
> What is the unique problem that Murano is addressing?  The current
> software config work can deploy multiple configs to a target.  Supposing
> that the local config (the non-distributed base configuration management
> tool involved, which is open in the current software config work) is
> expressed using something sufficiently powerful (chef and bash are
> examples), the local config language can do abstraction and composition in
> the description of local configuration.
>
> Regards,
> Mike
> ___
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>


-- 
Georgy Okrokvertskhov
Architect,
OpenStack Platform Products,
Mirantis
http://www.mirantis.com
Tel. +1 650 963 9828
Mob. +1 650 996 3284
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [heat] non-trivial example - IBM Connections [and Murano]

2014-02-08 Thread Mike Spreitzer
> From: Georgy Okrokvertskhov 
> ...
> Thank you for sharing this. It looks pretty impressive. Could you, 
> please some details about DSL syntax, if it is possible?

I will respond briefly, and pass your request along to the people working 
on that.

In the Weaver language there are distinct concepts for software 
configuration vs. things (such as VMs) that can host software configs.  As 
in the current software config work, there are distinct concepts for 
defining a software configuration vs. applying one to some particular 
infrastructure.  Weaver supposes that local configuration is described in 
Chef; Weaver adds a way of connecting chef variables across machines.  So 
you see, there are a lot of similarities with the current work on software 
config, which I support.

Weaver takes advantage of the power of Ruby metaprogramming to add pretty 
natural and concise constructs for modeling infrastructure and software 
config.  The source does not look like it is one level off, it looks like 
it is describing a thing rather than describing how to build a model of 
the thing (even though that is what it is actually doing).

Embedding in Ruby adds powerful and familiar support for abstraction and 
customized repetition in descriptions of distributed systems.  This is 
going to be hard to do nicely in a language (regardless of whether it uses 
JSON or YAML syntax) that is primarily for data representation.  One of 
the points of sharing this example was to show a system for which you 
would like such power.

What is the unique problem that Murano is addressing?  The current 
software config work can deploy multiple configs to a target.  Supposing 
that the local config (the non-distributed base configuration management 
tool involved, which is open in the current software config work) is 
expressed using something sufficiently powerful (chef and bash are 
examples), the local config language can do abstraction and composition in 
the description of local configuration.

Regards,
Mike___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [heat] non-trivial example - IBM Connections

2014-02-07 Thread Georgy Okrokvertskhov
Hi Mike,

Thank you for sharing this. It looks pretty impressive. Could you, please
some details about DSL syntax, if it is possible?

In our Murano project we are also solving the problem of Heat template
generation. At his moment we are working on a new DSL for Murano to move
from XMLs based DSL to simplified lightweight  Yaml based DSL syntax. Here
is an example how this new DSL looks like.
https://github.com/istalker2/MuranoDsl/blob/master/meta/com.mirantis.murano.services.windows.activeDirectory.PrimaryController/manifest.yaml

Using Murano DSL it is possible to combine multiple Applications defined by
their manifests and then Murano engine will create Heat template for the
whole environment by using Heat snippets available in Murano.

Thanks
Georgy



On Thu, Feb 6, 2014 at 11:16 PM, Mike Spreitzer  wrote:

> Thanks to work by several colleagues, I can share a non-trivial Heat
> template for a system that we have been using as an example to work.  It is
> in the TAR archive here:
>
>
> https://drive.google.com/file/d/0BypF9OutGsW3Z2JqVTcxaW1BeXc/edit?usp=sharing
>
> Start at connections.yaml.  Also in the archive are other files referenced
> from that template.
>
> The system described is a non-trival J2EE application, IBM Connections.
>  It is a suite of collaboration applications, including things like wiki,
> file sharing, blogs, and directory of people.  It is deployed into a system
> of WebSphere application servers.  The servers are organized into four
> "clusters" of four servers each; each server is a VM with a single
> application server.  The applications are partitioned among the four
> clusters.  There is also a "deployment manager", a VM and process used to
> manage the application servers.  There is also a pair of HTTP servers ---
> the "IBM Http Server" (IHS), basically the Apache httpd.  There is also a
> database server, running DB2.  This system makes reference to an external
> (not deployed by the template) NFS server and an extenal LDAP server.  The
> template describes both the VMs and the configuration of the software on
> them.  The images used have the IBM software installed but not configured.
>
> This template (and the referenced files) were produced by automatic
> translation from sources expressed in Weaver into a Heat template that is
> ready to run.  Weaver is a system for describing both infrastructure and
> software configuration (based on Chef).  A Weaver description is a modular
> Ruby program that computes a model of the infrastructure and software;
> Weaver includes certain constructs tailored to this job, you may think of
> this as a DSL embedded in Ruby.  The cross-machine dependencies are
> described abstractly in the source, connected to things in the Chef.
>  Weaver uses an implementation that is different from the one being
> implemented now; Weaver's is based on communication through Zookeeper.  You
> will see in the Heat the convolution of the user's input and Weaver's
> implementation (as Heat has no built in support for this mechanism).  (I
> say these things not as a sales pitch, but to explain what you will see.)
>
> You will not be able to instantiate this template, as it has several
> references to external servers that are part of our environment, including
> those mentioned above.  In fact, I have edited the external references to
> remove some private details.  This template is presented as an example to
> look at.
>
> Regards,
> Mike
> ___
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>


-- 
Georgy Okrokvertskhov
Architect,
OpenStack Platform Products,
Mirantis
http://www.mirantis.com
Tel. +1 650 963 9828
Mob. +1 650 996 3284
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev