# This class ensures ntp is up'n running and synchronizing with ntp servers. class timezone( $zone = hiera('ntp::zone', '') ) { case $zone { '': { fail("you need to define ntp::zone for ntp module") } } # the needed packages package { "tzdata": ensure => installed, } # adjust localtime file { "/etc/localtime": ensure => "/usr/share/zoneinfo/${zone}", require => Package["tzdata"], } } class ntp( $servers = hiera('ntp::servers', '') ) { class { 'timezone': } case $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( $pool = hiera('ntp::pool', '') ) { class { 'timezone': } # TODO: add logrotate rule to /var/log/ntpdate.log case $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 ${pool} >> /var/log/ntpdate.log 2>&1", user => root, hour => "*/1", minute => "10", ensure => present, require => Package["ntpdate"], } }