Skip to content
Snippets Groups Projects
dns.pp 2.23 KiB
Newer Older
Adam Lewenberg's avatar
Adam Lewenberg committed
# 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' }
Adam Lewenberg's avatar
Adam Lewenberg committed
}
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'),