summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2013-05-26 16:18:30 -0300
committerSilvio Rhatto <rhatto@riseup.net>2013-05-26 16:18:30 -0300
commita2d2316176c496a11bb520ac6a88612756483395 (patch)
tree3112c30a1b7168ab8942b07de9631638623dd1dc
parent2f27ace0089a78e060ec1edf1ab58037344512ba (diff)
downloadpuppet-bind-a2d2316176c496a11bb520ac6a88612756483395.tar.gz
puppet-bind-a2d2316176c496a11bb520ac6a88612756483395.tar.bz2
Adding bind::view
-rw-r--r--manifests/view.pp54
-rw-r--r--manifests/zone.pp17
-rw-r--r--templates/view.erb5
3 files changed, 72 insertions, 4 deletions
diff --git a/manifests/view.pp b/manifests/view.pp
new file mode 100644
index 0000000..07f1b31
--- /dev/null
+++ b/manifests/view.pp
@@ -0,0 +1,54 @@
+# = Definition: bind::view
+#
+# Creates a valid Bind9 view.
+#
+# Arguments:
+# *$match-clients*: Clients to be matched.
+# *$recursion*: Whether it's a recursive view.
+#
+define bind::view (
+ $ensure = present,
+ $match_clients = 'any',
+ $recursion = 'yes',
+) {
+
+ concat::fragment { "named.local.view.${name}":
+ ensure => $ensure,
+ target => '/etc/bind/named.conf.local',
+ content => "include \"/etc/bind/views/${name}.conf\";\n",
+ notify => Service['bind9'],
+ require => Package['bind9'],
+ }
+
+ case $ensure {
+ present: {
+ concat { "/etc/bind/views/${name}.conf":
+ owner => root,
+ group => root,
+ mode => '0644',
+ }
+
+ concat::fragment { "00.bind.views.${name}":
+ ensure => $ensure,
+ target => "/etc/bind/views/${name}.conf",
+ content => template('bind/view.erb'),
+ notify => Service['bind9'],
+ require => Package['bind9'],
+ }
+
+ concat::fragment { "99.bind.views.${name}":
+ ensure => $ensure,
+ target => "/etc/bind/views/${name}.conf",
+ content => "};\n",
+ notify => Service['bind9'],
+ require => Package['bind9'],
+ }
+ }
+ absent: {
+ file {"/etc/bind/views/${name}.conf":
+ ensure => absent,
+ }
+ }
+ default: {}
+ }
+}
diff --git a/manifests/zone.pp b/manifests/zone.pp
index 1b61788..db792ae 100644
--- a/manifests/zone.pp
+++ b/manifests/zone.pp
@@ -27,11 +27,20 @@ define bind::zone (
$zone_ns = false,
$zone_xfers = false,
$zone_masters = false,
- $zone_origin = false
+ $zone_origin = false,
+ $view = false
) {
+ $target = $view ? {
+ false => "/etc/bind/zones/${name}.conf",
+ default => "/etc/bind/views/${view}.conf",
+ }
+
concat::fragment {"named.local.zone.${name}":
- ensure => $ensure,
+ ensure => $view ? {
+ false => $ensure,
+ default => absent,
+ },
target => '/etc/bind/named.conf.local',
content => "include \"/etc/bind/zones/${name}.conf\";\n",
notify => Service['bind9'],
@@ -40,14 +49,14 @@ define bind::zone (
case $ensure {
present: {
- concat {"/etc/bind/zones/${name}.conf":
+ concat { $target:
owner => root,
group => root,
mode => '0644',
}
concat::fragment {"bind.zones.${name}":
ensure => $ensure,
- target => "/etc/bind/zones/${name}.conf",
+ target => $target,
notify => Service['bind9'],
require => Package['bind9'],
}
diff --git a/templates/view.erb b/templates/view.erb
new file mode 100644
index 0000000..44de741
--- /dev/null
+++ b/templates/view.erb
@@ -0,0 +1,5 @@
+/* File managed by puppet */
+view "<%= name %>" {
+ match-clients { <%= match_clients %>; };
+ recursion <%= recursion %>;
+