# Defines the DNS configuration of a system. class base::dns { base::dns::resolv_conf { $::fqdn: ensure => present } } # This class adds a reference to a local DNS caching server. class base::dns::cache inherits base::dns { include base::daemontools, base::dns::cache_packages Base::Dns::Resolv_conf[$::fqdn] { dns_cache => true } } class base::dns::cache_packages { # Stanford package for DNS caching. package { 'stanford-dnscache': ensure => present, notify => Exec['chown dnslog:dnslog /var/log/dnscache'], } # This is required because ownership is wrong on reinstall of packages # but not on initial install. exec {'chown dnslog:dnslog /var/log/dnscache': command => 'chown -R dnslog:dnslog /var/log/dnscache', refreshonly => true, } } # These classes are for servers at Livermore. The resolv.conf puts # the Livermore dns server first in the search list. class base::dns::dr inherits base::dns { Base::Dns::Resolv_conf[$::fqdn] { first_dns_server => '204.63.227.68' } } class base::dns::dr-cache inherits base::dns::cache { Base::Dns::Resolv_conf[$::fqdn] { first_dns_server => '204.63.227.68' } } # This class is for domain name servers. class base::dns::dns-server inherits base::dns { Base::Dns::Resolv_conf[$::fqdn] { is_dns_server => ture } } # RHEL6 requires a custom resolv.conf to deal with a single-threaded lookup # bug which reduces performance to a crawl for services like sshd. # # TODO: remove EL6 custom resolv.conf when this bug is fixed. define base::dns::resolv_conf ( $ensure = present, $dns_cache = 'NONE', $first_dns_server = 'NONE', $is_dns_server = false , ) { if $::lsbdistcodename == 'santiago' { $set_dns_options = true $dns_options = 'single-request-reopen' } else { $set_dns_options = false } if $dns_cache != 'NONE' { $set_dns_cache = true } else { $set_dns_cache = false } if $first_dns_server != 'NONE' { $set_first_dns_server = true } else { $set_first_dns_server = false } # resolv.conf is constructed from a template if $is_dns_server { $dns_server_name=$::hostname } file { '/etc/resolv.conf': ensure => $ensure, content => template('base/dns/etc/resolv.conf.erb'), } }