class Chrony

Public Instance Methods

deploy() click to toggle source
# File lib/dust/recipes/chrony.rb, line 3
def deploy
  # warn if other ntp package is installed
  [ 'openntpd', 'ntp' ].each do |package|
    if @node.package_installed?(package, :quiet => true)
      @node.messages.add("#{package} installed, might conflict with chrony, might get deleted").warning
    end
  end

  # install package
  return false unless @node.install_package('chrony')

  # set config file and service name according to distribution used
  if @node.uses_apt?
    config = '/etc/chrony/chrony.conf'
    service = 'chrony'
  elsif @node.uses_rpm?
    config = '/etc/chrony.conf'
    service = 'chronyd'
  end

  @node.write(config, generate_config)

  # centos systems don't use -r by default
  @node.write('/etc/sysconfig/chronyd', 'OPTIONS="-u chrony -r"' + "\n") if @node.uses_rpm?

  @node.autostart_service(service)
  @node.restart_service(service) if options.restart?
end

Private Instance Methods

default_options() click to toggle source

default chrony.conf options

# File lib/dust/recipes/chrony.rb, line 46
def default_options
  options = {
    'server' => [
      '0.pool.ntp.org minpoll 8',
      '1.pool.ntp.org minpoll 8',
      '2.pool.ntp.org minpoll 8',
      '3.pool.ntp.org minpoll 8'
    ],
    'commandkey' => 1,
    'logdir' => '/var/log/chrony',
    'logchange' => 0.5,
    'maxupdateskew' => 100.0,       # Stop bad estimates upsetting machine clock.
    'dumponexit' => '',             # Dump measurements when daemon exits.
    'dumpdir' => '/var/lib/chrony'
  }

  if @node.uses_rpm?
    options['keyfile'] = '/etc/chrony.keys'
    options['driftfile'] = '/var/lib/chrony/drift'
  elsif @node.uses_apt?
    options['keyfile'] = '/etc/chrony/chrony.keys'
    options['driftfile'] = '/var/lib/chrony/chrony.drift'
  end

  options
end
generate_config() click to toggle source

generate chrony.conf

# File lib/dust/recipes/chrony.rb, line 36
def generate_config
  @config = default_options.merge(@config)
  file = ''
  @config.each do |key, value|
    Array(value).each { |v| file << "#{key} #{v}\n" }
  end
  file
end