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 -~----------~----~----~----~------~----~------~--~---