Some more work on the dns module. The only thing not working for some reason is the zone.slae.erb for an unknown reason.

This commit is contained in:
svimes 2012-02-05 21:29:13 +02:00
parent da1eef4333
commit bd4cc55ce1
6 changed files with 50 additions and 45 deletions

View file

@ -154,11 +154,11 @@ class dns::server {
# $master: # $master:
# IP address and FQDN or hostname of the DNS master for this zone. # IP address and FQDN or hostname of the DNS master for this zone.
# $slaves: # $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:
# Source file to use for zone. Defaults to auto. # 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 $zone = $name
case $role { 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, ensure => present,
content => template("dns/zone.$role.erb"), content => template("dns/zone.$role.erb"),
mode => 0640, mode => 0640,
@ -208,7 +209,7 @@ define dns::zone($role = "master", $master = [], $slaves = [], $source = "AUTO")
if $role == "master" { if $role == "master" {
if $source != "AUTO" { if $source != "AUTO" {
file { "${dns::server::chroot}${zonedir}/db.${zone}": file { "${dns::server::chroot}${zonedir}/db.${zonefile}":
ensure => present, ensure => present,
source => $source, source => $source,
mode => 0640, mode => 0640,
@ -221,7 +222,7 @@ define dns::zone($role = "master", $master = [], $slaves = [], $source = "AUTO")
notify => Service["named"], notify => Service["named"],
} }
} else { } else {
file { "${dns::server::chroot}${zonedir}/db.${zone}": file { "${dns::server::chroot}${zonedir}/db.${zonefile}":
ensure => present, ensure => present,
content => template("dns/db.erb"), content => template("dns/db.erb"),
mode => 0640, mode => 0640,
@ -233,9 +234,9 @@ define dns::zone($role = "master", $master = [], $slaves = [], $source = "AUTO")
}, },
notify => Service["named"], notify => Service["named"],
} }
file { "${dns::server::chroot}${zonedir}/db.${zone}-dynamic": file { "${dns::server::chroot}${zonedir}/db.${zonefile}-dynamic":
ensure => present, ensure => present,
source => [ "puppet:///files/dns/db.${zone}-dynamic.${homename}", source => [ "puppet:///files/dns/db.${zonefile}-dynamic.${homename}",
"puppet:///modules/dns/empty", ], "puppet:///modules/dns/empty", ],
mode => 0640, mode => 0640,
owner => "root", owner => "root",
@ -246,9 +247,9 @@ define dns::zone($role = "master", $master = [], $slaves = [], $source = "AUTO")
}, },
notify => Service["named"], notify => Service["named"],
} }
file { "${dns::server::chroot}${zonedir}/db.${zone}-static": file { "${dns::server::chroot}${zonedir}/db.${zonefile}-static":
ensure => present, ensure => present,
source => [ "puppet:///files/dns/db.${zone}-static.${homename}", source => [ "puppet:///files/dns/db.${zonefile}-static.${homename}",
"puppet:///modules/dns/empty", ], "puppet:///modules/dns/empty", ],
mode => 0640, mode => 0640,
owner => "root", owner => "root",

View file

@ -2,26 +2,25 @@
; BIND data file for <%= zone %> ; BIND data file for <%= zone %>
; ;
; ;
$TTL 3600 $TTL 3600
$ORIGIN <%= zone %>. $ORIGIN <%= zone %>.
<% master.each do |m| -%> <% master.each_pair do |k, v| %>
@ IN SOA <%= m['name'] %>. root.<%= zone %>. ( @ IN SOA <%= v['ns'] %>. hostmaster.<%= zone %>. (
<%= Time.now.to_i %> ; Serial <%= Time.now.to_i %> ; Serial
3600 ; Refresh 3600 ; Refresh
7200 ; Retry 7200 ; Retry
604800 ; Expire 604800 ; Expire
86400 ) ; Negative Cache TTL 86400 ) ; Negative Cache TTL
<% end -%>
; ;
<% master.each do |m| -%> @ IN NS <%= v['ns'] %>.
@ IN NS <%= m['name'] %>.
<% end -%> <% end -%>
<% if has_variable?(slaves) -%> <% slaves.each_pair do |k, v| -%>
<% slaves.each do |slave| -%> @ IN NS <%= v['ns'] %>.
@ IN NS <%= slave['name'] %>.
<% end -%>
<% end -%> <% 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 %>-dynamic
$INCLUDE <%= zonedir %>/db.<%= zone %>-static $INCLUDE <%= zonedir %>/db.<%= zone %>-static
<% end -%>

View file

@ -19,7 +19,11 @@ acl "trusted" {
}; };
<% dns_zones.each do |zone| -%> <% 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 -%> <% end -%>
// Consider adding the 1918 zones here, if they are not used in your // Consider adding the 1918 zones here, if they are not used in your

View file

@ -1,10 +1,7 @@
options { options {
listen-on { listen-on { any; };
<%= ipaddr %>; listen-on-v6 { none; };
}; allow-transfer { xfer; };
allow-transfer {
xfer;
};
allow-recursion { allow-recursion {
trusted; trusted;
}; };
@ -28,6 +25,6 @@ options {
// }; // };
auth-nxdomain no; # conform to RFC1035 auth-nxdomain no; # conform to RFC1035
version ""; // remove this to allow version queries
}; };

View file

@ -1,12 +1,14 @@
zone "<%= zone %>" { zone "<%= zone %>" {
type master; type master;
file "<%= zonedir %>/db.<%= zone %>"; <% if zone.match(/\//) %>
<% if not slaves.empty? -%> file "<%= zonedir %>/db.<%= zone.sub(/\//, '-') %>";
allow-transfer { <% else %>
<% slaves.each do |slave| -%> file "<%= zonedir %>/db.<%= zone %>";
<%= slave %>;
<% end -%>
};
allow-update { none;};
<% end -%> <% end -%>
allow-transfer {
<% slaves.each_pair do |k, v| -%>
<%= v['ip'] %>;
<% end -%>
};
allow-update { none; };
}; };

View file

@ -1,10 +1,12 @@
zone "<%= zone %>" { zone "<%= zone %>" {
type slave; type slave;
file "<%= zonedir %>/db.<%= zone %>"; <% if zone.match(/\//) %>
masters { file "<%= zonedir %>/db.<%= zone.sub(/\//, '-') %>";
<% master.each do |m| -%> <% else %>
<%= m %>; file "<%= zonedir %>/db.<%= zone %>";
<% end -%> <% end -%>
allow-transfer { none; }; <% master.each_pair do |k, v| -%>
}; masters { <% v['ip'] %> };
<% end -%>
allow-transfer { none; };
}; };