# Install and configure NTP daemon.
#
# === Global variables
#
#   $ntp_server:
#       Array of NTP servers.
#
class ntpd {

    if !$ntp_server {
        $ntp_server = ["pool.ntp.org"]
    }

    case $kernel {
        linux: {
            include ntpd::isc-ntpd
        }
        openbsd: {
            include ntpd::openntpd
        }
    }

}


# Install and configure ISC NTP.
#
class ntpd::isc-ntpd {

    package { "ntp":
        ensure => installed,
    }

    file { "/etc/ntp.conf":
        ensure  => present,
        mode    => 0644,
        owner   => root,
        group   => root,
        content => template("ntpd/ntp.conf.erb"),
        require => Package["ntp"],
        notify  => Service["ntpd"],
    }

    service { "ntpd":
        ensure => running,
        enable => true,
        name   => $operatingsystem ? {
            ubuntu  => "ntp",
            debian  => "ntp",
            default => "ntpd",
        },
    }

}


# Install and configure OpenNTPD.
#
class ntpd::openntpd {

    file { "/etc/ntpd.conf":
        ensure  => present,
        mode    => 0644,
        owner   => root,
        group   => wheel,
        content => template("ntpd/openntpd.conf.erb"),
        notify  => Service["ntpd"],
    }

    service { "ntpd":
        ensure  => running,
        enable  => true,
        binary  => "ntpd",
        start   => "ntpd -s",
        stop    => "pkill -u _ntp",
        status  => "pgrep -u _ntp",
        require => File["/etc/ntpd.conf"],
    }

}
