diff options
Diffstat (limited to 'manifests/view.pp')
-rw-r--r-- | manifests/view.pp | 54 |
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: {} + } +} |