diff --git a/dns/manifests/init.pp b/dns/manifests/init.pp new file mode 100644 index 0000000..2523a20 --- /dev/null +++ b/dns/manifests/init.pp @@ -0,0 +1,70 @@ +# Install DNS server. +# +class dns::server { + + case $operatingsystem { + centos,fedora: { + $rootdir = "/var/named/chroot" + package { "bind": + name => "bind-chroot", + ensure => installed, + } + } + default: { + $rootdir = "/var/named" + } + } + + file { "${rootdir}/etc/rndc.key": + ensure => present, + mode => 0640, + owner => root, + group => named, + require => $operatingsystem ? { + openbsd => undef, + default => Package["bind"], + }, + } + exec { "rndc-confgen": + command => "rndc-confgen -a -t ${rootdir}", + path => "/bin:/usr/bin:/sbin:/usr/sbin", + unless => "test -s ${rootdir}/etc/rndc.key", + require => File["${rootdir}/etc/rndc.key"], + } + file { "/etc/rndc.key": + ensure => "${rootdir}/etc/rndc.key", + owner => root, + group => $operatingsystem ? { + openbsd => wheel, + default => root, + }, + require => Exec["rndc-confgen"], + notify => Service["named"], + } + + service { "named": + ensure => running, + enable => true, + status => "/usr/sbin/rndc status", + start => $operatingsystem ? { + openbsd => "/usr/sbin/named", + default => undef, + }, + require => Exec["rndc-confgen"], + } + + file { "${rootdir}/etc/named.conf": + ensure => present, + source => [ "puppet:///files/dns/named.conf.${fqdn}", + "puppet:///files/dns/named.conf", ], + mode => 0640, + owner => root, + group => named, + require => $operatingsystem ? { + openbsd => undef, + default => Package["bind"], + }, + notify => Service["named"], + } + +}