It makes sense, and is in fact suggested
on this site, to have a critical file change trigger a service restart with puppet meta-parameters (such as notify or subscribe). For example:
## file definition for printers.conf
file { "/etc/cups/printers.conf":
[snip],
source => "puppet:///module/etc/cups/printers.conf"
}
## service definition for sshd
service { 'cups':
ensure => running,
subscribe => File['/etc/cups/printers.conf']
}
But in the case of CUPS, this triggers and endless loop of restarts; the logic works like this:
- Change puppetmaster's version of
/etc/cups/printers.conf
- puppetmaster pushes new version to
client, triggering cups restart - cupsd restart insists on putting its own
time stamp at the top of
printers.conf, 'Written by cupsd…' - This change will be seen as out of
date, so afterruninterval
, we
return to (1).
Is there a way to suppress cupsd's need to time stamp the file? Or is there a puppet trick that could help here?
Thanks!
Best Answer
You could copy the file to another name, and have an exec to only copy if printers.conf doesn't contain a line you require. Eg.