Added support for generating dns reverse records for puppet nodes
This commit is contained in:
parent
36c993a47b
commit
b1d21d84e3
1 changed files with 63 additions and 9 deletions
|
@ -450,43 +450,97 @@ define dns::zone($role = "master", $master = "", $slaves = [], $forwarders = [],
|
||||||
require => File["${dns::server::chroot}${zonedir}/db.${zone}-dynamic",
|
require => File["${dns::server::chroot}${zonedir}/db.${zone}-dynamic",
|
||||||
"${dns::server::chroot}${zonedir}/db.${zone}-dynamic.d"],
|
"${dns::server::chroot}${zonedir}/db.${zone}-dynamic.d"],
|
||||||
}
|
}
|
||||||
|
Dns::Node::Record::Reverse <<| 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"],
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Generate dynamic DNS records for puppet node.
|
||||||
|
#
|
||||||
|
# === Global variables
|
||||||
|
#
|
||||||
|
# $dns_node_name:
|
||||||
|
# A record name. Defaults to $hostname.
|
||||||
|
#
|
||||||
|
# $dns_node_zone:
|
||||||
|
# DNS zone. Defaults to $domain.
|
||||||
|
#
|
||||||
|
# $dns_node_ipaddr:
|
||||||
|
# IP address to use in records. Defaults to $ipaddress.
|
||||||
|
#
|
||||||
|
# $dns_node_netmask:
|
||||||
|
# Netmask for determining reverse zone class. Defaults to $netmask.
|
||||||
|
#
|
||||||
|
# $dns_node_alias:
|
||||||
|
# List of names used as CNAME records.
|
||||||
|
#
|
||||||
class dns::node {
|
class dns::node {
|
||||||
|
|
||||||
if !$dns_node_name {
|
if !$dns_node_name {
|
||||||
$dns_node_name = $::hostname
|
$dns_node_name = $::hostname
|
||||||
}
|
}
|
||||||
if !$dns_node_ipaddr {
|
|
||||||
$dns_node_ipaddr = $::ipaddress
|
|
||||||
}
|
|
||||||
if !$dns_node_zone {
|
if !$dns_node_zone {
|
||||||
$dns_node_zone = $::domain
|
$dns_node_zone = $::domain
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !$dns_node_ipaddr and !$dns_node_netmask {
|
||||||
|
$dns_node_ipaddr = $::ipaddress
|
||||||
|
$dns_node_netmask = $::netmask
|
||||||
|
} else {
|
||||||
|
if !$dns_node_ipaddr or !$dns_node_netmask {
|
||||||
|
fail("Must define both \$dns_node_ipaddr and \$dns_node_netmask")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if $dns_node_alias {
|
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_cname = inline_template("<% dns_node_alias.each do |a| -%><%= a %>\tIN\tCNAME\t<%= dns_node_name %>\n<% end -%>")
|
||||||
|
} else {
|
||||||
|
$dns_node_cname = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
@@dns::node::record { "${dns_node_name}.${dns_node_zone}":
|
@@dns::node::record { "${dns_node_name}.${dns_node_zone}":
|
||||||
name => $dns_node_name,
|
|
||||||
cname => $dns_node_cname,
|
|
||||||
ipaddr => $dns_node_ipaddr,
|
ipaddr => $dns_node_ipaddr,
|
||||||
|
host => $dns_node_name,
|
||||||
|
cname => $dns_node_cname,
|
||||||
tag => $dns_node_zone
|
tag => $dns_node_zone
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$dns_node_class = inline_template("<%= dns_node_netmask.scan('255.').length -%>")
|
||||||
|
$dns_node_raddr = inline_template("<%= dns_node_ipaddr.split('.').reverse.first(4-dns_node_class.to_i).join('.') -%>")
|
||||||
|
$dns_node_rzone = inline_template("<%= dns_node_ipaddr.split('.').reverse.last(dns_node_class.to_i).join('.') -%>.in-addr.arpa")
|
||||||
|
|
||||||
|
@@dns::node::record::reverse { "${dns_node_name}.${dns_node_zone}":
|
||||||
|
ipaddr => $dns_node_raddr,
|
||||||
|
host => "${dns_node_name}.${dns_node_zone}",
|
||||||
|
tag => $dns_node_rzone
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
define dns::node::record($dbdir, $ipaddr, $name, $cname="") {
|
define dns::node::record($dbdir, $ipaddr, $host, $cname="") {
|
||||||
|
|
||||||
file { "${dbdir}/rr.${name}":
|
file { "${dbdir}/rr.${name}":
|
||||||
ensure => present,
|
ensure => present,
|
||||||
content => "${name}\tA\t${ipaddr}\n${cname}",
|
content => "${host}\tIN\tA\t${ipaddr}\n${cname}",
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
define dns::node::record::reverse($dbdir, $ipaddr, $host) {
|
||||||
|
|
||||||
|
file { "${dbdir}/rr.${name}":
|
||||||
|
ensure => present,
|
||||||
|
content => "${ipaddr}\tIN\tPTR\t${host}.\n",
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue