Hi all.

For some background, we're essentially using puppet in much the same
way you would use the ssh-and-a-for-loop method. I know it's well,
fundamentally missing the point, but the thing is, there are a few
constraints that we're currently otherwise unable to satisfy.

Essentailly, we have a large number of nigh upon homogeneous servers
organised into clusters of about 10 machines each. These are entirely
customer-facing, so we need to be able to ensure that the cluster
overall doesn't go down when we're doing software deployments. So, to
do this, we follow a process rather like this:

Disable server inload balancer -> Take server out of monitoring -> run
puppet -> Put server back in monitoring -> Enable server inLoad
balancer

Combined with smoketesting of the server once it's been upgraded, and
ensuring that it comes back up in monitoring; and ensuring that only
N/M servers are out of service at any one time. In fact, this is more
or less what Luke himself suggested when I met him.

The problem therefore, is that currently, puppet can only say "Make X
look like Y", not "While doing A make X look like Y and otherwise Z".
So we could say something like:

loadbalancer { $ipaddress: ensure => enabled }
semaphore { $cluster_name: ensure => none }

with-temporary-state {
 ensuring => {
    LoadBalancer[$ipaddress] { ensure => disabled }
    Semaphore[$cluster_name] { ensure => aquired }
    }
 package { wibble: ensure => "1.0.1" }
}

So here, puppet would know  that when entering the
with-temporary-state block it needs to ensure that ensure on the
loadbalancer resource is set to enabled and the semaphore resource is
aquired, and that at all other times, they are set to enabled / none
respectively. Also, if the changing of the state fails, then we'd need
to skip the block (as puppet does with failed dependencies).

I suppose what I'm asking, is firstly, is anyone else doing anything
like this themselves? I imagine someone must be. If so, are they using
wrapper scripts (as we do) or some other mechanism?

Secondly, if my company were to sponsor development of such a feature
(ie: let me develop it at work), what would we have to do to get it
into the mainline release of puppet? I fully imagine that it'll need a
bit of discussion first, as of course, it's a bit of a shift in how
puppet models resources.
--
Ceri Storey

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

Reply via email to