# profiles::dns::base class profiles::dns::base ( Array $search = [], Array $nameservers = ['198.18.13.12', '198.18.13.13'], Optional[Enum[ 'all', 'region', 'country' ]] $use_ns = undef, Optional[String] $ns_role = undef, ){ # install bind_utils include bind::updater # if ns_role is set, find all hosts matching that enc_role $nameserver_array = $ns_role ? { undef => $nameservers, default => $use_ns ? { 'all' => query_nodes("enc_role='${ns_role}'", 'networking.ip'), 'region' => query_nodes("enc_role='${ns_role}' and region=${facts['region']}", 'networking.ip'), 'country' => query_nodes("enc_role='${ns_role}' and country=${facts['country']}", 'networking.ip'), } } # if nameservers not returned from puppetdb, use default $use_nameservers = empty($nameserver_array) ? { true => $nameservers, false => $nameserver_array, } # if search is undef, fallback to domainname from facts if $search == [] { $search_array = [$::facts['networking']['domain']] }else{ $search_array = $search } # include resolvconf class class { 'profiles::dns::resolvconf': nameservers => sort($use_nameservers), search_domains => sort($search_array), } # export dns records for client profiles::dns::client {"${facts['networking']['fqdn']}-default":} }