From a2d2316176c496a11bb520ac6a88612756483395 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sun, 26 May 2013 16:18:30 -0300 Subject: Adding bind::view --- manifests/view.pp | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ manifests/zone.pp | 17 +++++++++++++---- templates/view.erb | 5 +++++ 3 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 manifests/view.pp create mode 100644 templates/view.erb 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 %>; + -- cgit v1.2.3