diff --git a/dns/manifests/init.pp b/dns/manifests/init.pp index 21e3910..2e613d8 100644 --- a/dns/manifests/init.pp +++ b/dns/manifests/init.pp @@ -183,13 +183,16 @@ class dns::server { # $role: # The role {master, slave} of this host. # $master: -# IP address and FQDN or hostname of the DNS master for this zone. +# IP address of DNS master for this zone if role is slave. +# IP address and FQDN of DNS master for this zone if running as +# master and using autogenerated zone. # $slaves: # IP addresess and host names of the DNS slaves for this zone. +# Required only when using autogenrated zones. # $source: # Source file to use for zone. Defaults to auto. # -define dns::zone($role = "master", $master = [], $slaves = [], $source = "AUTO") { +define dns::zone($role = "master", $master = "", $slaves = [], $source = "AUTO") { $zone = $name case $role { @@ -207,6 +210,9 @@ define dns::zone($role = "master", $master = [], $slaves = [], $source = "AUTO") } } "slave": { + if $master == "" { + fail("No master defined for dns::zone '${name}'") + } case $operatingsystem { "openbsd": { $zonedir = "/slave" diff --git a/dns/templates/zone.slave.erb b/dns/templates/zone.slave.erb index 87e34e5..f8a3c2f 100644 --- a/dns/templates/zone.slave.erb +++ b/dns/templates/zone.slave.erb @@ -1,12 +1,10 @@ zone "<%= zone %>" { type slave; - <% if zone.match(/\//) %> +<% if zone.match(/\//) %> file "<%= zonedir %>/db.<%= zone.sub(/\//, '-') %>"; - <% else %> +<% else -%> file "<%= zonedir %>/db.<%= zone %>"; - <% end -%> - <% master.each_pair do |k, v| -%> - masters { <%= v['ip'] %>; }; - <% end -%> +<% end -%> + masters { <%= master %>; }; allow-transfer { none; }; };