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",
|
||||
"${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 {
|
||||
|
||||
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_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 {
|
||||
$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}":
|
||||
name => $dns_node_name,
|
||||
cname => $dns_node_cname,
|
||||
ipaddr => $dns_node_ipaddr,
|
||||
tag => $dns_node_zone
|
||||
host => $dns_node_name,
|
||||
cname => $dns_node_cname,
|
||||
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}":
|
||||
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