Distributing cron jobs efficiently
When you have many servers executing the same cron job, it's usually a good idea not to run them all at the same time. If all of the jobs access a common server (for example, when running backups), it may put too much load on that server, and even if they don't, all the servers will be busy at the same time, which may affect their capacity to provide other services.
How to do it...
Here's how to have Puppet schedule the same job at a different time for each machine:
- Modify your
site.pp
file as follows:
node 'cookbook' { cron { 'run-backup': ensure => present, command => '/usr/local/bin/backup', hour => split($facts['ipaddress'],'\.')[3] % 24, minute => '00', } }
- Run Puppet:
[root@cookbook ~]# puppet agent -t ... Notice: /Stage[main]/Main/Node[cookbook]/Cron[run-backup]/ensure: created
- Check
crontab
to see how the job has been configured:
# HEADER: This file was autogenerated at 2018-03-15 19:13:55 +0000 by puppet. # HEADER:...