Added support for generating dns records for puppet nodes

This commit is contained in:
Ossi Salmi 2012-11-18 22:03:01 +02:00
parent aadf34cbe8
commit f72325de30
2 changed files with 78 additions and 5 deletions

View file

@ -391,12 +391,9 @@ define dns::zone($role = "master", $master = "", $slaves = [], $forwarders = [],
},
notify => Service["named"],
}
file { "${dns::server::chroot}${zonedir}/db.${zone}-dynamic":
ensure => present,
source => [
"puppet:///files/dns/db.${zone}-dynamic.${homename}",
"puppet:///modules/dns/empty",
],
mode => "0640",
owner => "root",
group => $dns::server::group,
@ -406,6 +403,22 @@ define dns::zone($role = "master", $master = "", $slaves = [], $forwarders = [],
},
notify => Service["named"],
}
file { "${dns::server::chroot}${zonedir}/db.${zone}-dynamic.d":
ensure => directory,
mode => "0640",
owner => "root",
group => $dns::server::group,
require => $::operatingsystem ? {
"openbsd" => undef,
default => Package["bind"],
},
purge => true,
force => true,
recurse => true,
source => "puppet:///modules/custom/empty",
notify => Service["named"],
}
file { "${dns::server::chroot}${zonedir}/db.${zone}-static":
ensure => present,
source => [
@ -421,12 +434,64 @@ define dns::zone($role = "master", $master = "", $slaves = [], $forwarders = [],
},
notify => Service["named"],
}
exec { "update-db.${zone}-dynamic":
path => "/bin:/usr/bin:/sbin:/usr/sbin",
command => "/bin/sh -c 'find db.${zone}-dynamic.d -name rr.\\* | xargs cat > db.${zone}-dynamic'",
cwd => "${dns::server::chroot}${zonedir}",
user => "root",
refreshonly => true,
notify => Service["named"],
}
Dns::Node::Record <<| tag == $zone |>> {
dbdir => "${dns::server::chroot}${zonedir}/db.${zone}-dynamic.d",
notify => Exec["update-db.${zone}-dynamic"],
require => File["${dns::server::chroot}${zonedir}/db.${zone}-dynamic",
"${dns::server::chroot}${zonedir}/db.${zone}-dynamic.d"],
}
}
}
}
class dns::node {
if !$dns_node_name {
$dns_node_name = $::hostname
}
if !$dns_node_ipaddr {
$dns_node_ipaddr = $::ipaddress
}
if !$dns_node_zone {
$dns_node_zone = $::domain
}
if $dns_node_alias {
$dns_node_cname = inline_template("<% dns_node_alias.each do |a| -%><%= a %>\tCNAME\t<%= dns_node_name %>\n<% end -%>")
}
@@dns::node::record { "${dns_node_name}.${dns_node_zone}":
name => $dns_node_name,
cname => $dns_node_cname,
ipaddr => $dns_node_ipaddr,
tag => $dns_node_zone
}
}
define dns::node::record($dbdir, $ipaddr, $name, $cname="") {
file { "${dbdir}/rr.${name}":
ensure => present,
content => "${name}\tA\t${ipaddr}\n${cname}",
}
}
# Install dynamic DNS update script
#
# === Global variables

View file

@ -75,6 +75,14 @@ EOF
for name in ${chroot}/${confdir}/* ; do
[ -d ${name} ] || continue
printview `basename ${name}`
name=`basename ${name}`
case ${name} in
db.*)
continue
;;
*)
printview ${name}
;;
esac
done
printview default