/lockrun-cookbook

Installs the lockrun executable for cronjob overrun protection.

Primary LanguageCOtherNOASSERTION

lockrun-cookbook

Release Build Status Code Coverage

Installs the lockrun executable for running cronjobs with overrun protection.

Basic Usage

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