Installs the lockrun executable for running cronjobs with overrun protection.
This cookbook is extremely useful when you only want to have a single process running at a time. We use this to ensure that there is only ever one Chef Client running at a time. If a process already has the lock it bails out immediately.
Instead of writing a wrapper script every time you want this functionality simply use the lockrun executable. It counts the number of open file descriptors to a lockfile on disk.
include_recipe 'lockrun::default'
sleep_time = 0
unless node['chef_client']['splay'].to_i == 0
checksum = Digest::MD5.hexdigest(node['fqdn'] || 'unknown-hostname')
sleep_time = checksum.to_s.hex % node['chef_client']['splay'].to_i
end
lockrun_cron 'chef-client' do
command "/bin/sleep #{sleep_time}; chef-client > /dev/null 2>&1"
cron_options(minute: '0', hour: '*', weekday: '*')
end
Out of the box the following platforms are certified to work and are tested using our [Test Kitchen][8] configuration. Additional platforms may work, but your mileage may vary.
- CentOS (RHEL) 5.8, 6.6, 7.1
- Ubuntu 12.04, 14.04