]> gitweb.fluxo.info Git - puppet-bind.git/commitdiff
Adding bind::view
authorSilvio Rhatto <rhatto@riseup.net>
Sun, 26 May 2013 19:18:30 +0000 (16:18 -0300)
committerSilvio Rhatto <rhatto@riseup.net>
Sun, 26 May 2013 19:18:30 +0000 (16:18 -0300)
manifests/view.pp [new file with mode: 0644]
manifests/zone.pp
templates/view.erb [new file with mode: 0644]

diff --git a/manifests/view.pp b/manifests/view.pp
new file mode 100644 (file)
index 0000000..07f1b31
--- /dev/null
@@ -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: {}
+  }
+}
index 1b617887ae0c886ccadf51826e212419889a5350..db792aeac3e2c7a7bd8cd01ec1811569b5d8b16e 100644 (file)
@@ -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 (file)
index 0000000..44de741
--- /dev/null
@@ -0,0 +1,5 @@
+/* File managed by puppet */
+view "<%= name %>" {
+        match-clients { <%= match_clients %>; };
+        recursion <%= recursion %>;
+