Ensemble and configuration

Shawn Edmondson sed at rpath.com
Fri Jun 10 14:38:16 UTC 2011

Hi folks, I work on product management and strategy here at rPath.  We
are committed to adding model-driven orchestration to our system
management offering, and would love to find a compatible open-source
project to contribute to rather than build something new, so I've been
looking at Ensemble after hearing about it from Ben Saller.

Looks great so far.  I'm happy to see someone tackling this problem at
this level of abstraction.  It's the best effort I've seen at
supersetting the platform-specific functionality in CloudFormation and

I like the architectural choice of delegating the low-level work to
executables.  The open-source instance config framework we released at
rPath recently also lets you use any command line (we call them
"configurators") for low-level configuration, and customers really
like that flexibility.  They can use old Perl scripts, simple file
templating (we bundle Genshi), Puppet manifests, etc.  We manage the
config properties, configurator parameterization, and configurator

I have a few basic questions so far about Ensemble -- answers or
see-elsewheres would be hugely appreciated.

1. Does it/will it require one instance of the ensemble manager VM per
   environment?  If I'm managing many environments (such as at an
   ASP/SaaS vendor with many instances of a single-tenant app), I'd
   expect one manager to handle multiple environments.

2. For the wordpress+mysql example in the doc, you start up each
   service independently, then add the relation.  Before you add the
   relation, w hat logical state is the wordpress service in -- is it
   something like "can't really start yet because I don't have a DB?"

3. Looks like formulas are models for individual services, and
   formulas can refer to others as provides/requires, but there isn't
   an enclosing model for a multi-service application.  I expected to
   see some sort of overarching composition model for (say) a full
   wordpress deployment, where that model refers to the mysql service
   and the wordpress service.  Is that something planned, or seen as

4. In the example, wordpress/0 didn't automatically become related to
   mysql/0, but wordpress/1 did.  Why did those two behave

5. Are the project developers OK making it widely cross-platform over
   time (for not only other Linuxes, but also Windows)?

6. You have a draft concept of config properties for services, which I
   really like.  Right now it is for what I call "write only" config
   -- the sysadmin specifies property values that get passed down to
   hooks for implementation.  (rPath config is similar today.)  I'd
   like to see "read/write" config properties, plus config
   dependencies, that would let you solve this point problem:

     * Each application constellation needs an app server and a DB

     * The app server needs a JDBC string for the corresponding DB.

     * The DB gets its IP from DHCP. 

     * How do I automatically configure each app+DB combo correctly?

We're thinking it should work like this:  The DB model (formula)
*provides* a readable config property, JDBCAddress, generated by a
simple hook that calls ifconfig to find the IP address and fills out a
string template.  The app server model *requires* a config property,
JDBCAddress, and would feed that (as in your current model) to an
underlying hook (say to poke into a jboss.xml file).  The framework
would automatically resolve that dependency by name at deploy time.
(Appserver/57 needs JDBCAddress, and dbserver/91 in the same
environment provides JDBCAddress, so I'll connect the dots.)  The
enclosing model could optionally specify an explicit mapping instead
of doing it implicitly by name.

We're leaning toward building something like that, but of course would
rather see it within an existing open-source project if possible.

Thanks, glad to see this project moving!


Shawn Edmondson
VP, Product Strategy
rPath, Inc.
sed at rpath.com
Twitter: @sedmondson
Blog: http://blogs.rpath.com/wpmu/technically-speaking

More information about the Ensemble mailing list