-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

This hits close to home with something that I would love to see added to
the puppetmaster but haven't quite figured out how to describe until
recently.

I recently realized that, for a given environment, what you actually
have is a massive parallel program running across various nodes.
Therefore, what I would like in the puppetmaster is a set of
stored-state named semaphores.

They would work as follows:

Semaphore: DB=0 on the puppetmaster

node web_server {
  if semaphore('semaphore_db') > 0 {
    include "foo"
    include "bar"
  }
}

node db_server {
  include "db"
}

class db {
  service { "some_db":
    ensure => 'running',
    require => Exec['set_me_up']
  }

  exec { 'set_me_up':
    command => 'do stuff',
    notify => semaphore('semaphore_db', '>=', '1')
  }
}

So, what this would do, is to set the semaphore $semaphore_db to 1 only
if the exec properly executes (which means that the DB got set up
correctly) and then would only set it to 1 if it was not already >= 1 so
that multi-state processes can be handled.

Then, once the semaphore has been set, web_server would include what it
needed to properly function.

Note that this is not a locking process, the normal run of puppet would
ensue and the state change would only be noticed on the next run.

This does lag things out over a few runs of puppet, but also (I think)
keeps the entire thing running the 'puppet way' by essentially setting a
cross-system state fact.

I figured that the semaphore call would be an TLS REST call back to the
master, or a separate lookup process if you wanted to offload the work
to a different system.

Thanks,

Trevor

On 02/04/2010 03:42 PM, Michael DeHaan wrote:
> On Thu, Feb 4, 2010 at 9:58 AM, jcbollinger <john.bollin...@stjude.org> wrote:
>>
>>
>> On Feb 3, 3:08 pm, Michael DeHaan <mich...@reductivelabs.com> wrote:
>>> Actually I think it can be done by leveraging an improved storeconfigs and
>>> the existing language.
>>
>> I was wondering whether storeconfigs would come up.  The problem I see
>> with that is storeconfigs, as I understand them, record the managed
>> resource states each host *should* have, not necessarily those each
>> one *does* have.  What happens to my multinode deployment if at some
>> point in the middle, Puppet fails to apply a necessary resource state?
> 
> If Puppet fails applying a state, it should record the current state,
> not the once and future state.
> 
> I'll dig into the schema of what it does now, but don't limit your
> thinking based on what storeconfigs currently does or is,
> think about what it can be.
> 
> 
> 
>> Absolutely so, and that connects back to your earlier comments about
>> message buses.  Messaging is the lifeblood of any kind of
>> orchestration technology, but there are a variety of message exchange
>> patterns, message implementations, and messaging options, many
>> combinations of which are viable.  Some could reasonably be
>> characterized as "push", but many others couldn't.
> 
> 
> This is an software architecture statement, and architecture is
> independent of execution and concepts.
> 
> Long term, I expect to see messaging will happen and can then play a
> much wider role mainly for offline delivery implications
> and routing.   Though much can be hinged on present workings, whether
> RESTful or RPCy (which, aren't all that different regardless).
> 
> However, first, small steps.
> 
>>
>> Any way around, there is a class of messages needed for this that
>> Puppet does not currently have: messages from clients advertising the
>> individual or collective state of their managed resources.  The
>> absolute simplest form would be a reply to the Puppetmaster indicating
>> whether a catalog was successfully applied, but finer-grained state
>> messages would be much more flexible.  These would address the problem
>> of discrepancy between supposed and actual state.
> 
> Eventing and reporting, and an evolved storeconfigs concept are
> something we're looking at, for sure.
> 
> Stay tuned, and of course, if you have time, patches are very much welcome.
> 

- -- 
Trevor Vaughan
 Vice President, Onyx Point, Inc.
 email: tvaug...@onyxpoint.com
 phone: 410-541-ONYX (6699)

- -- This account not approved for unencrypted sensitive information --
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)

iEYEARECAAYFAktr9CYACgkQyWMIJmxwHpR1kwCgvsOCN3x30q/INfSn2yQ0DTSR
aOwAnjztorRfAVsdCGk9UdyCxDZy3Ok6
=9cF1
-----END PGP SIGNATURE-----

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-us...@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to