summaryrefslogtreecommitdiff
path: root/manifests/view.pp
diff options
context:
space:
mode:
Diffstat (limited to 'manifests/view.pp')
-rw-r--r--manifests/view.pp54
1 files changed, 54 insertions, 0 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: {}
+ }
+}