Thanks to everyone in this thread for the help. I ended up using Paul Lathrop's manifest and it worked beautifully.
On Dec 11, 3:07 am, "paul matthews" <[email protected]> wrote: > Paul, > > Thanks very much for yor explanation - that's cleared things up and also > accounted for why some things had not been running as expected > > Cheers > Paul > > 2008/12/10 Paul Lathrop <[email protected]> > > > > > Paul, > > > 'subscribe' and 'notify' are supersets of 'require' and 'before,' > > respectively. While 'require' and 'before' simply insist that the > > resource ordering occurs in a certain fashion, 'subscribe' and > > 'notify' make use of "events". An "event" occurs whenever a resource > > changes, and some resources behave differently when they receive an > > "event". For example, say you have the following: > > > file { "/etc/apache/apache.conf": > > source => "puppet:///apache/apache.conf", > > before => Service["apache"]; > > } > > > service { "apache": > > enable => true, > > ensure => running; > > } > > > When you run puppet on a new machine, it will copy the apache.conf > > from the puppetmaster first, then enable and start apache. When the > > file changes, the puppetmaster will fetch the new file, but *nothing > > will happen to apache*. This is the use case for subscribe/notify: > > > file { "/etc/apache/apache.conf": > > source => "puppet:///apache/apache.conf", > > notify => Service["apache"]; > > } > > > service { "apache": > > enable => true, > > ensure => running; > > } > > > With this manifest, puppet will notice that the file has changed, and > > will generate an "event" which it will send to the "apache" service. > > Service resources are restarted when they receive events. > > > Note that 'subscribe' is a superset of 'require' so the resources will > > still be applied in the correct order. > > > Does this make more sense now? > > > --Paul > > > On Wed, Dec 10, 2008 at 2:12 PM, paul matthews > > <[email protected]> wrote: > > > Like Matt I have been using "before=>" statements as opposed to > > "notify=>" > > > to try and ensure dependency order. Could someone highlight the > > distinction > > > as both seem to ensure a task is run and completed before the next step > > is > > > called. > > > > Thanks > > > Paul > > > > 2008/12/10 Paul Lathrop <[email protected]> > > > >> Mat, > > > >> This should work (untested): > > > >> file { "/tmp/server_binary": > > >> source => "puppet:///files/server_binary", > > >> notify => Exec["stop-server"]; > > >> } > > > >> file { "/usr/local/sbin/server_binary": > > >> source => "/tmp/server_binary", > > >> require => Exec["stop-server"], > > >> notify => Exec["start-server"] > > >> } > > > >> # Stops the server > > >> exec { "/usr/local/sbin/stop-server": > > >> alias => "stop-server", > > >> refreshonly => true > > >> } > > > >> # Starts the server > > >> exec { "/usr/local/sbin/start-server": > > >> alias => "start-server", > > >> refreshonly => true > > >> } > > > >> --Paul > > > >> On Tue, Dec 9, 2008 at 1:09 PM, Mathew Binkley <[email protected] > > > >> wrote: > > > >> > Hi. I'm hoping that someone can help me with a simple example. We > > are > > >> > trying to use puppet to update a server binary to a group of machines. > > >> > Here's pseudocode for what I'm trying: > > > >> > if (server_binary has changed) { > > >> > 1) stop the old server > > >> > 2) overwrite the old server binary by > > >> > fetching the new server binary from puppet > > >> > 3) start the new server > > >> > } > > > >> > Here's the puppet manifest I wrote to handle this, but it isn't > > working > > >> > properly. It is not working as intended, and is 1) downloading the > > new > > >> > binary and then 2) stopping the server, which screws up our data. > > I've > > >> > been looking through the documentation, and it isn't clear which > > >> > permutation of before, require, subscribe, or notify is necessary to > > >> > accomplish this. Hope someone can enlighten me. - Mat > > > >> > file { "/usr/local/sbin/server_binary": > > >> > source => "puppet:///files/server_binary", > > >> > require => Exec["stop-server"], > > >> > before => Exec["start-server"] > > >> > } > > > >> > # Stops the server > > >> > exec { "/usr/local/sbin/stop-server": > > >> > alias => "stop-server", > > >> > refreshonly => true > > >> > } > > > >> > # Starts the server > > >> > exec { "/usr/local/sbin/start-server": > > >> > alias => "start-server", > > >> > refreshonly => true > > >> > } --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to [email protected] 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 -~----------~----~----~----~------~----~------~--~---
