Added support for generating dns records for puppet nodes
This commit is contained in:
parent
aadf34cbe8
commit
f72325de30
2 changed files with 78 additions and 5 deletions
|
@ -391,12 +391,9 @@ define dns::zone($role = "master", $master = "", $slaves = [], $forwarders = [],
|
||||||
},
|
},
|
||||||
notify => Service["named"],
|
notify => Service["named"],
|
||||||
}
|
}
|
||||||
|
|
||||||
file { "${dns::server::chroot}${zonedir}/db.${zone}-dynamic":
|
file { "${dns::server::chroot}${zonedir}/db.${zone}-dynamic":
|
||||||
ensure => present,
|
ensure => present,
|
||||||
source => [
|
|
||||||
"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,
|
||||||
|
@ -406,6 +403,22 @@ define dns::zone($role = "master", $master = "", $slaves = [], $forwarders = [],
|
||||||
},
|
},
|
||||||
notify => Service["named"],
|
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":
|
file { "${dns::server::chroot}${zonedir}/db.${zone}-static":
|
||||||
ensure => present,
|
ensure => present,
|
||||||
source => [
|
source => [
|
||||||
|
@ -421,7 +434,59 @@ define dns::zone($role = "master", $master = "", $slaves = [], $forwarders = [],
|
||||||
},
|
},
|
||||||
notify => Service["named"],
|
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}",
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,6 +75,14 @@ EOF
|
||||||
|
|
||||||
for name in ${chroot}/${confdir}/* ; do
|
for name in ${chroot}/${confdir}/* ; do
|
||||||
[ -d ${name} ] || continue
|
[ -d ${name} ] || continue
|
||||||
printview `basename ${name}`
|
name=`basename ${name}`
|
||||||
|
case ${name} in
|
||||||
|
db.*)
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
printview ${name}
|
||||||
|
;;
|
||||||
|
esac
|
||||||
done
|
done
|
||||||
printview default
|
printview default
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue