Added support for DNS views into dns::server and dns::zone.
This commit is contained in:
parent
7083f00454
commit
48ded3a8e7
2 changed files with 93 additions and 42 deletions
|
@ -233,18 +233,24 @@ class dns::server::ldap inherits dns::server {
|
||||||
#
|
#
|
||||||
define dns::zone($role = "master", $master = "", $slaves = [], $source = "AUTO") {
|
define dns::zone($role = "master", $master = "", $slaves = [], $source = "AUTO") {
|
||||||
|
|
||||||
$zone = $name
|
$tmpname = regsubst($name, '([^/]+/)?([0-9]+)/([0-9\.]+\.in-addr\.arpa)', '\1\2-\3')
|
||||||
|
case dirname($tmpname) {
|
||||||
|
".": { $view = "" }
|
||||||
|
default: { $view = regsubst(dirname($tmpname), "^(.*)", "\1/") }
|
||||||
|
}
|
||||||
|
$zone = basename($tmpname)
|
||||||
|
|
||||||
case $role {
|
case $role {
|
||||||
"master": {
|
"master": {
|
||||||
case $operatingsystem {
|
case $operatingsystem {
|
||||||
"openbsd": {
|
"openbsd": {
|
||||||
$zonedir = "/master"
|
$zonedir = "/master/${view}"
|
||||||
}
|
}
|
||||||
"fedora","centos": {
|
"fedora","centos": {
|
||||||
$zonedir = "/var/named"
|
$zonedir = "/var/named/${view}"
|
||||||
}
|
}
|
||||||
"ubuntu": {
|
"ubuntu": {
|
||||||
$zonedir = "/etc/bind"
|
$zonedir = "/etc/bind/${view}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -254,13 +260,13 @@ define dns::zone($role = "master", $master = "", $slaves = [], $source = "AUTO")
|
||||||
}
|
}
|
||||||
case $operatingsystem {
|
case $operatingsystem {
|
||||||
"openbsd": {
|
"openbsd": {
|
||||||
$zonedir = "/slave"
|
$zonedir = "/slave/${view}"
|
||||||
}
|
}
|
||||||
"fedora","centos": {
|
"fedora","centos": {
|
||||||
$zonedir = "/var/named/slaves"
|
$zonedir = "/var/named/slaves/${view}"
|
||||||
}
|
}
|
||||||
"ubuntu": {
|
"ubuntu": {
|
||||||
$zonedir = "/var/cache/bind"
|
$zonedir = "/var/cache/bind/${view}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -269,8 +275,28 @@ define dns::zone($role = "master", $master = "", $slaves = [], $source = "AUTO")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$zonefile = regsubst($zone, '\/', '-')
|
if $view != "" {
|
||||||
file { "${dns::server::chroot}${dns::server::confdir}/zone.${zonefile}":
|
if !defined(File["${dns::server::chroot}${dns::server::confdir}/${view}"]) {
|
||||||
|
file { "${dns::server::chroot}${dns::server::confdir}/${view}":
|
||||||
|
ensure => directory,
|
||||||
|
mode => "0750",
|
||||||
|
owner => "root",
|
||||||
|
group => $dns::server::group,
|
||||||
|
before => File["${dns::server::chroot}${dns::server::confdir}/${view}zone.${zone}"],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !defined(File["${dns::server::chroot}${zonedir}"]) {
|
||||||
|
file { "${dns::server::chroot}${zonedir}":
|
||||||
|
ensure => directory,
|
||||||
|
mode => "0750",
|
||||||
|
owner => "root",
|
||||||
|
group => $dns::server::group,
|
||||||
|
before => File["${dns::server::chroot}${zonedir}db.${zone}"],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
file { "${dns::server::chroot}${dns::server::confdir}/${view}zone.${zone}":
|
||||||
ensure => present,
|
ensure => present,
|
||||||
content => template("dns/zone.$role.erb"),
|
content => template("dns/zone.$role.erb"),
|
||||||
mode => "0640",
|
mode => "0640",
|
||||||
|
@ -285,7 +311,7 @@ define dns::zone($role = "master", $master = "", $slaves = [], $source = "AUTO")
|
||||||
|
|
||||||
if $role == "master" and $zone != "." {
|
if $role == "master" and $zone != "." {
|
||||||
if $source != "AUTO" {
|
if $source != "AUTO" {
|
||||||
file { "${dns::server::chroot}${zonedir}/db.${zonefile}":
|
file { "${dns::server::chroot}${zonedir}db.${zone}":
|
||||||
ensure => present,
|
ensure => present,
|
||||||
source => $source,
|
source => $source,
|
||||||
mode => "0640",
|
mode => "0640",
|
||||||
|
@ -298,7 +324,7 @@ define dns::zone($role = "master", $master = "", $slaves = [], $source = "AUTO")
|
||||||
notify => Exec["generate-named-conf"],
|
notify => Exec["generate-named-conf"],
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
file { "${dns::server::chroot}${zonedir}/db.${zonefile}":
|
file { "${dns::server::chroot}${zonedir}/db.${zone}":
|
||||||
ensure => present,
|
ensure => present,
|
||||||
content => template("dns/db.erb"),
|
content => template("dns/db.erb"),
|
||||||
mode => "0640",
|
mode => "0640",
|
||||||
|
@ -310,10 +336,12 @@ define dns::zone($role = "master", $master = "", $slaves = [], $source = "AUTO")
|
||||||
},
|
},
|
||||||
notify => Service["named"],
|
notify => Service["named"],
|
||||||
}
|
}
|
||||||
file { "${dns::server::chroot}${zonedir}/db.${zonefile}-dynamic":
|
file { "${dns::server::chroot}${zonedir}/db.${zone}-dynamic":
|
||||||
ensure => present,
|
ensure => present,
|
||||||
source => [ "puppet:///files/dns/db.${zonefile}-dynamic.${homename}",
|
source => [
|
||||||
"puppet:///modules/dns/empty", ],
|
"puppet:///files/dns/db.${zone}-dynamic.${homename}",
|
||||||
|
"puppet:///modules/dns/empty",
|
||||||
|
],
|
||||||
mode => "0640",
|
mode => "0640",
|
||||||
owner => "root",
|
owner => "root",
|
||||||
group => $dns::server::group,
|
group => $dns::server::group,
|
||||||
|
@ -323,10 +351,12 @@ define dns::zone($role = "master", $master = "", $slaves = [], $source = "AUTO")
|
||||||
},
|
},
|
||||||
notify => Service["named"],
|
notify => Service["named"],
|
||||||
}
|
}
|
||||||
file { "${dns::server::chroot}${zonedir}/db.${zonefile}-static":
|
file { "${dns::server::chroot}${zonedir}/db.${zone}-static":
|
||||||
ensure => present,
|
ensure => present,
|
||||||
source => [ "puppet:///files/dns/db.${zonefile}-static.${homename}",
|
source => [
|
||||||
"puppet:///modules/dns/empty", ],
|
"puppet:///files/dns/db.${zone}-static.${homename}",
|
||||||
|
"puppet:///modules/dns/empty",
|
||||||
|
],
|
||||||
mode => "0640",
|
mode => "0640",
|
||||||
owner => "root",
|
owner => "root",
|
||||||
group => $dns::server::group,
|
group => $dns::server::group,
|
||||||
|
|
|
@ -4,21 +4,25 @@ chroot="<%= chroot %>"
|
||||||
confdir="<%= confdir %>"
|
confdir="<%= confdir %>"
|
||||||
operatingsystem="<%= operatingsystem %>"
|
operatingsystem="<%= operatingsystem %>"
|
||||||
|
|
||||||
cat <<EOF
|
function printview {
|
||||||
include "${confdir}/named.conf.local";
|
view=$1
|
||||||
include "${confdir}/named.conf.options";
|
case $view in
|
||||||
|
default)
|
||||||
|
viewdir="${confdir}"
|
||||||
|
acl="any"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
viewdir="${confdir}/${view}"
|
||||||
|
acl="${view}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
view default {
|
echo "view ${view} {"
|
||||||
match-clients { any; };
|
echo " match-clients { ${acl}; };"
|
||||||
EOF
|
|
||||||
|
|
||||||
for name in ${chroot}${confdir}/zone.* ; do
|
case $operatingsystem in
|
||||||
echo " include \"${confdir}/`basename ${name}`\";"
|
OpenBSD)
|
||||||
done
|
cat <<EOF
|
||||||
|
|
||||||
case $operatingsystem in
|
|
||||||
OpenBSD)
|
|
||||||
cat <<EOF
|
|
||||||
zone "." {
|
zone "." {
|
||||||
type hint;
|
type hint;
|
||||||
file "/etc/root.hint";
|
file "/etc/root.hint";
|
||||||
|
@ -36,12 +40,12 @@ case $operatingsystem in
|
||||||
file "/standard/loopback6.arpa";
|
file "/standard/loopback6.arpa";
|
||||||
};
|
};
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
Ubuntu)
|
Ubuntu)
|
||||||
echo " include \"${confdir}/named.conf.default-zones\";"
|
echo " include \"${confdir}/named.conf.default-zones\";"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
|
|
||||||
zone "." {
|
zone "." {
|
||||||
type hint;
|
type hint;
|
||||||
|
@ -49,10 +53,27 @@ EOF
|
||||||
};
|
};
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
cat ${chroot}/etc/named.rfc1912.zones | \
|
cat ${chroot}/etc/named.rfc1912.zones | \
|
||||||
sed -e 's%file "%file "/var/named/%' -e 's/^/ /'
|
sed -e 's%file "%file "/var/named/%' -e 's/^/ /'
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
echo "};"
|
for name in ${chroot}${viewdir}/zone.* ; do
|
||||||
echo ""
|
echo " include \"${viewdir}/`basename ${name}`\";"
|
||||||
|
done
|
||||||
|
echo "};"
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
cat <<EOF
|
||||||
|
include "${confdir}/named.conf.local";
|
||||||
|
include "${confdir}/named.conf.options";
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
for name in ${chroot}/${confdir}/* ; do
|
||||||
|
[ -d ${name} ] || continue
|
||||||
|
printview `basename ${name}`
|
||||||
|
done
|
||||||
|
printview default
|
||||||
|
|
Loading…
Add table
Reference in a new issue