Setup puppet client to run in a cron task with a random minute
Puppet architecture needs a client to connect to the server to load the configuration usin a pull schema. But I do not like to have more and more daemons around and some people suggest avoid that , so I decided to execute puppet using '--onetime' option from cron.
Obviously, I want to configure this using puppet itself. And we must ensure that the clients are executed at different times, not all at the same minute.
I searched the net and I found several aproaches to do this. There are also feature requests.
I read somewhere that the new function fqdn_rand() could be used, as proposed in the feature request and posted in this mail from Brice Figureau. I can not find where the hell the snippet was. At the end, I found this pastie by Jhon Goebel.
I will post my version here just to keep it wrote down.
$first = fqdn_rand(30)
$second = fqdn_rand(30) + 30
cron { "cron.puppet.onetime":
command => "/srv/scripts/puppet/puppet.ctl.sh onetime > /dev/null",
user => "root",
minute => [ $first, $second ],
require => File["/srv/scripts/puppet/puppet.ctl.sh"],
}
… this is another random thinking from keymon (http://keymon.wordpress.com)