christiangda/puppet-powerdns

View on GitHub
manifests/backend.pp

Summary

Maintainability
Test Coverage
#
class powerdns::backend (
  $backend_name       = $powerdns::params::default_backend_name,
  $ensure             = $powerdns::params::default_backend_ensure,
  $config_file_backup = $powerdns::params::backend_config_file_backup,
  $config             = {},
) inherits powerdns {

  # check if backend backend_name is valid
  if ! ("pdns-backend-${backend_name}" in $powerdns::params::package_backends) {
    fail("pdns-backend-${backend_name} is not a valid backend name")
  }
  # check valid values for package ensure param
  if ! ($ensure in [ 'present', 'installed', 'absent', 'purged', 'held', 'latest' ]) {
    fail("${ensure} is not a valid status parameter value")
  }

  validate_hash($config)

  # get the path for backend config file
  $key = 'include-dir'
  $config_options = $powerdns::params::default_config

  if is_hash($config_options) and has_key($config_options, $key) {
    $backend_conf_path  = $config_options[$key]
  }

  $config_file = "${backend_conf_path}/${powerdns::params::default_backend_config_file_prefix}.g${backend_name}.conf"

  # check valid values for package ensure param
  if ($backend_name == 'mysql') {
    $options = merge($powerdns::params::default_backend_config, $config)
  } else {
    $options = $config
  }

  powerdns::install { "pdns-backend-${backend_name}": } ->
  file { $config_file:
    ensure  => 'file',
    path    => $config_file,
    content => template("${module_name}/config/KEY-VALUE-conf-file.erb"),
    mode    => $powerdns::backend_file_perms,
    owner   => $powerdns::user,
    group   => $powerdns::group,
    notify  => Service[$powerdns::params::service_name],
    backup  => $config_file_backup,
  }

  if ($backend_name != 'bind') {
    # Only one backend engine will be working, so, disable default backend
    file { $powerdns::package_backends_bind_files:
      ensure => 'absent',
      owner  => $powerdns::user,
      group  => $powerdns::group,
      backup => $config_file_backup,
    }
  }

}