Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

how can i ensure that if new version of configuration file is downloaded via puppet from master repository to one of managed servers relevant service is restarted.

typical scenario - let's say there is new munin or apache config. puppet client discovers it, overwrites local files... and... - how to make sure service is restarted / reloaded ?

thanks a lot!

share|improve this question

3 Answers 3

up vote 20 down vote accepted

An alternative to notify is subscribe:

file { "/etc/sshd_config":
    source => "....",
}

service { sshd:
    ensure => running,
    subscribe => File["/etc/sshd_config"],
}

The difference being that the relationship is described from the other end. For example, you might make apache subscribe to /etc/apache/httpd.conf, but you'd make a vhost file notify apache, as your apache class won't know about every vhost you have.

A similar dual-ended situation applies to require and before. It's just a matter of which makes more sense in the particular situation.

As Chad mentioned, if you find puppet constantly trying to start your service, then you need to add a pattern parameter, which is a regex to apply against the list of processes. By default puppet will do a stop and start to restart a service. If you add "hasrestart => true", then it will use the command specified in the "restart" parameter to restart the service.

share|improve this answer

it seems i've found something:

file { "/etc/sshd_config":
    source => "....",
    notify => Service[sshd]
}

service { sshd:
    ensure => running
}

we'll see how that will work. anyway your thoughts on the subject are welcome.

share|improve this answer
1  
Yes. You can find the details in the Puppet Type Reference under "Metaparameters" (reductivelabs.com/trac/puppet/wiki/TypeReference#metaparameters) –  Chad Huneycutt Jul 13 '09 at 21:44
1  
Oh, and depending on your OS, you may have to play with the hasstatus, hasrestart, and/or pattern parameters of the service type. –  Chad Huneycutt Jul 13 '09 at 21:47

This works for Solaris 10 :)

class sun_cron_root {
    file { "/var/spool/cron/crontabs/root" :
            source => "puppet:///files/cron/sun/sun_cron_root"
            }

    service {
            "cron":
            provider => "smf",
            ensure => running,
            enable => true,
            hasrestart => true,
            subscribe => File["/var/spool/cron/crontabs/root"]
            }

}
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.