Skip to content
Snippets Groups Projects
dns.pp 2.12 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,
  }
Adam Lewenberg's avatar
Adam Lewenberg committed
}

# This class is 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
}

# This class is for servers at Livermore.  The resolv.conf puts the
# local caching server first and includes Livermore dns server.
class base::dns::dr-cache inherits base::dns::cache {
  Base::Dns::Resolv_conf[$::fqdn] { first_dns_server => '204.63.227.68' }
# 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'
) {
  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
  file { '/etc/resolv.conf':
    ensure  => $ensure,
    content => template('base/dns/etc/resolv.conf.erb'),