# This class ensures ntp is up'n running and synchronizing with ntp servers. class timezone { case $ntp_timezone { '': { fail("you need to define \$ntp_timezone for ntp module") } } # the needed packages package { "tzdata": ensure => installed, } # adjust localtime file { "/etc/localtime": ensure => "/usr/share/zoneinfo/${ntp_timezone}", require => Package["tzdata"], } } class ntp inherits timezone { case $ntp_servers { '': { fail("you need to define \$ntp_servers for ntp module") } } # the needed packages package { "ntp": ensure => installed, } # ntp service service { "ntp": enable => true, ensure => running, hasrestart => true, require => [ Package["ntp"], File["/etc/ntp.drift"], File["/etc/ntp.conf"] ], } # the /etc/ntp.drift file contains the latest estimate of clock frequency # error. file { "/etc/ntp.drift": owner => "root", group => "root", mode => 0644, ensure => present, } # ntp configuration file file { "/etc/ntp.conf": content => template('ntp/ntp.conf.erb'), owner => "root", group => "root", mode => 0644, ensure => present, notify => Service["ntp"], } } class ntpdate inherits timezone { # TODO: add logrotate rule to /var/log/ntpdate.log case $ntp_pool { '': { fail("you need to define \$ntp_pool for ntp module") } } # the needed packages package { "ntpdate": ensure => present, } # adjust time using ntpdate cron { "ntpdate": command => "/usr/sbin/ntpdate -t 5 ${ntp_pool} >> /var/log/ntpdate.log 2>&1", user => root, hour => "*/1", minute => "10", ensure => present, require => Package["ntpdate"], } }