puppet-prod/site/profiles/manifests/dns/base.pp
Ben Vincent 978013f325 chore: set default nameservers (#240)
- if no nameservers are returned from puppetdb query, use default

Reviewed-on: https://git.query.consul/unkinben/puppet-prod/pulls/240
2025-03-31 22:49:47 +11:00

49 lines
1.3 KiB
Puppet

# profiles::dns::base
class profiles::dns::base (
String $ns_role = undef,
Array $search = [],
Array $nameservers = ['198.18.13.12', '198.18.13.13'],
Enum[
'all',
'region',
'country'
] $use_ns = 'all',
){
# 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":}
}