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

Reply via email to