From bd4cc55ce1e658714b43cc0aa170889b230fa2b7 Mon Sep 17 00:00:00 2001 From: svimes Date: Sun, 5 Feb 2012 21:29:13 +0200 Subject: [PATCH] Some more work on the dns module. The only thing not working for some reason is the zone.slae.erb for an unknown reason. --- dns/manifests/init.pp | 19 ++++++++++--------- dns/templates/db.erb | 21 ++++++++++----------- dns/templates/named.conf.local.erb | 6 +++++- dns/templates/named.conf.options.erb | 11 ++++------- dns/templates/zone.master.erb | 20 +++++++++++--------- dns/templates/zone.slave.erb | 18 ++++++++++-------- 6 files changed, 50 insertions(+), 45 deletions(-) diff --git a/dns/manifests/init.pp b/dns/manifests/init.pp index 937d524..603edf3 100644 --- a/dns/manifests/init.pp +++ b/dns/manifests/init.pp @@ -154,11 +154,11 @@ class dns::server { # $master: # IP address and FQDN or hostname of the DNS master for this zone. # $slaves: -# IP addresess and FQDNs or hostnames of the DNS slaves for this zone. +# IP addresess and host names of the DNS slaves for this zone. # $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 { @@ -193,7 +193,8 @@ define dns::zone($role = "master", $master = [], $slaves = [], $source = "AUTO") } } - file { "${dns::server::chroot}${dns::server::confdir}/zone.${zone}": + $zonefile = regsubst($zone, '\/', '-') + file { "${dns::server::chroot}${dns::server::confdir}/zone.${zonefile}": ensure => present, content => template("dns/zone.$role.erb"), mode => 0640, @@ -208,7 +209,7 @@ define dns::zone($role = "master", $master = [], $slaves = [], $source = "AUTO") if $role == "master" { if $source != "AUTO" { - file { "${dns::server::chroot}${zonedir}/db.${zone}": + file { "${dns::server::chroot}${zonedir}/db.${zonefile}": ensure => present, source => $source, mode => 0640, @@ -221,7 +222,7 @@ define dns::zone($role = "master", $master = [], $slaves = [], $source = "AUTO") notify => Service["named"], } } else { - file { "${dns::server::chroot}${zonedir}/db.${zone}": + file { "${dns::server::chroot}${zonedir}/db.${zonefile}": ensure => present, content => template("dns/db.erb"), mode => 0640, @@ -233,9 +234,9 @@ define dns::zone($role = "master", $master = [], $slaves = [], $source = "AUTO") }, notify => Service["named"], } - file { "${dns::server::chroot}${zonedir}/db.${zone}-dynamic": + file { "${dns::server::chroot}${zonedir}/db.${zonefile}-dynamic": ensure => present, - source => [ "puppet:///files/dns/db.${zone}-dynamic.${homename}", + source => [ "puppet:///files/dns/db.${zonefile}-dynamic.${homename}", "puppet:///modules/dns/empty", ], mode => 0640, owner => "root", @@ -246,9 +247,9 @@ define dns::zone($role = "master", $master = [], $slaves = [], $source = "AUTO") }, notify => Service["named"], } - file { "${dns::server::chroot}${zonedir}/db.${zone}-static": + file { "${dns::server::chroot}${zonedir}/db.${zonefile}-static": ensure => present, - source => [ "puppet:///files/dns/db.${zone}-static.${homename}", + source => [ "puppet:///files/dns/db.${zonefile}-static.${homename}", "puppet:///modules/dns/empty", ], mode => 0640, owner => "root", diff --git a/dns/templates/db.erb b/dns/templates/db.erb index a9e5b1d..ed1e5a2 100644 --- a/dns/templates/db.erb +++ b/dns/templates/db.erb @@ -2,26 +2,25 @@ ; BIND data file for <%= zone %> ; ; - $TTL 3600 $ORIGIN <%= zone %>. -<% master.each do |m| -%> -@ IN SOA <%= m['name'] %>. root.<%= zone %>. ( +<% master.each_pair do |k, v| %> +@ IN SOA <%= v['ns'] %>. hostmaster.<%= zone %>. ( <%= Time.now.to_i %> ; Serial 3600 ; Refresh 7200 ; Retry 604800 ; Expire 86400 ) ; Negative Cache TTL -<% end -%> ; -<% master.each do |m| -%> -@ IN NS <%= m['name'] %>. +@ IN NS <%= v['ns'] %>. <% end -%> -<% if has_variable?(slaves) -%> - <% slaves.each do |slave| -%> -@ IN NS <%= slave['name'] %>. - <% end -%> +<% slaves.each_pair do |k, v| -%> +@ IN NS <%= v['ns'] %>. <% end -%> - +<% if zone.match(/\//) %> +$INCLUDE <%= zonedir %>/db.<%= zone.sub(/\//, '-') %>-dynamic +$INCLUDE <%= zonedir %>/db.<%= zone.sub(/\//, '-') %>-static +<% else %> $INCLUDE <%= zonedir %>/db.<%= zone %>-dynamic $INCLUDE <%= zonedir %>/db.<%= zone %>-static +<% end -%> diff --git a/dns/templates/named.conf.local.erb b/dns/templates/named.conf.local.erb index 35c5b34..2b4a0a1 100644 --- a/dns/templates/named.conf.local.erb +++ b/dns/templates/named.conf.local.erb @@ -19,7 +19,11 @@ acl "trusted" { }; <% dns_zones.each do |zone| -%> -include "/etc/bind/zone.<%= zone %>"; + <% if zone.match(/\//) %> + include "/etc/bind/zone.<%= zone.sub(/\//, '-') %>"; + <% else %> + include "/etc/bind/zone.<%= zone %>"; + <% end -%> <% end -%> // Consider adding the 1918 zones here, if they are not used in your diff --git a/dns/templates/named.conf.options.erb b/dns/templates/named.conf.options.erb index ace919a..adbc1ba 100644 --- a/dns/templates/named.conf.options.erb +++ b/dns/templates/named.conf.options.erb @@ -1,10 +1,7 @@ options { - listen-on { - <%= ipaddr %>; - }; - allow-transfer { - xfer; - }; + listen-on { any; }; + listen-on-v6 { none; }; + allow-transfer { xfer; }; allow-recursion { trusted; }; @@ -28,6 +25,6 @@ options { // }; auth-nxdomain no; # conform to RFC1035 - + version ""; // remove this to allow version queries }; diff --git a/dns/templates/zone.master.erb b/dns/templates/zone.master.erb index 7153c97..942b498 100644 --- a/dns/templates/zone.master.erb +++ b/dns/templates/zone.master.erb @@ -1,12 +1,14 @@ zone "<%= zone %>" { - type master; - file "<%= zonedir %>/db.<%= zone %>"; - <% if not slaves.empty? -%> - allow-transfer { - <% slaves.each do |slave| -%> - <%= slave %>; - <% end -%> - }; - allow-update { none;}; + type master; + <% if zone.match(/\//) %> + file "<%= zonedir %>/db.<%= zone.sub(/\//, '-') %>"; + <% else %> + file "<%= zonedir %>/db.<%= zone %>"; <% end -%> + allow-transfer { + <% slaves.each_pair do |k, v| -%> + <%= v['ip'] %>; + <% end -%> + }; + allow-update { none; }; }; diff --git a/dns/templates/zone.slave.erb b/dns/templates/zone.slave.erb index 8e8356e..d5c25d7 100644 --- a/dns/templates/zone.slave.erb +++ b/dns/templates/zone.slave.erb @@ -1,10 +1,12 @@ zone "<%= zone %>" { - type slave; - file "<%= zonedir %>/db.<%= zone %>"; - masters { - <% master.each do |m| -%> - <%= m %>; - <% end -%> - allow-transfer { none; }; - }; + type slave; + <% if zone.match(/\//) %> + file "<%= zonedir %>/db.<%= zone.sub(/\//, '-') %>"; + <% else %> + file "<%= zonedir %>/db.<%= zone %>"; + <% end -%> + <% master.each_pair do |k, v| -%> + masters { <% v['ip'] %> }; + <% end -%> + allow-transfer { none; }; };