feat: enable selecting nameserver by fact

- enable selecting nameservers to use by region, country or all
- set default for nameservers to be region
This commit is contained in:
Ben Vincent 2024-04-23 22:39:33 +10:00
parent bb8bf202ac
commit dbe11323c5
2 changed files with 13 additions and 4 deletions

View File

@ -57,6 +57,7 @@ profiles::base::puppet_servers:
profiles::dns::master::basedir: '/var/named/sources'
profiles::dns::base::ns_role: 'roles::infra::dns::resolver'
profiles::dns::base::use_ns: 'region'
profiles::packages::install:
- bash-completion

View File

@ -3,16 +3,24 @@ class profiles::dns::base (
String $ns_role = undef,
Array $search = [],
Array $nameservers = ['8.8.8.8', '1.1.1.1'],
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
if $ns_role == undef {
$nameserver_array = $nameservers
}else{
$nameserver_array = query_nodes("enc_role='${ns_role}'", 'networking.ip')
$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 search is undef, fallback to domainname from facts