Skip to content
Snippets Groups Projects
dns.pp 2.39 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 {
  include base::dns::cache_packages
  
  base::dns::resolv_conf { "$fqdn":
    ensure    => present,
    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 {
  base::dns::resolv_conf { $fqdn :
    ensure           => present,
    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 {
  include base::dns::cache_packages

  base::dns::resolv_conf { $fqdn :
    ensure           => present,
    dns_cache        => true,
    first_dns_server => '204.63.227.68',
  }
}

define base::dns::resolv_conf (
  $ensure           = present,
  $dns_cache        = 'NONE',
  $first_dns_server = 'NONE'
) {
  case $ensure {
    'absent': {
      file { '/etc/resolv.conf': ensure => absent }
    }
    'present': {
      # 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.
      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':
        content => template('base/dns/etc/resolv.conf.erb')
      }
Adam Lewenberg's avatar
Adam Lewenberg committed
    }