From 680d15c2ed27c48b4c2bb209e33c17218d3366a1 Mon Sep 17 00:00:00 2001 From: Davide Ferrari Date: Mon, 11 Jan 2016 16:01:56 +0100 Subject: [PATCH 1/2] Add a new array allow_update_cidr to specify CIDR addresses as possible allow_update values --- manifests/zone.pp | 40 ++++++++++++++++++++------------------- templates/zone-master.erb | 7 ++++--- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/manifests/zone.pp b/manifests/zone.pp index c45810e..dd85998 100644 --- a/manifests/zone.pp +++ b/manifests/zone.pp @@ -19,24 +19,25 @@ # *$zone_notify*: IPs to use for also-notify entry # define bind::zone ( - $ensure = present, - $is_dynamic = false, - $allow_update = [], - $transfer_source = undef, - $zone_type = 'master', - $zone_ttl = undef, - $zone_contact = undef, - $zone_serial = undef, - $zone_refresh = '3h', - $zone_retry = '1h', - $zone_expiracy = '1w', - $zone_ns = [], - $zone_xfers = undef, - $zone_masters = undef, - $zone_forwarders = undef, - $zone_origin = undef, - $zone_notify = undef, - $is_slave = false, + $ensure = present, + $is_dynamic = false, + $allow_update = [], + $allow_update_cidr = [], + $transfer_source = undef, + $zone_type = 'master', + $zone_ttl = undef, + $zone_contact = undef, + $zone_serial = undef, + $zone_refresh = '3h', + $zone_retry = '1h', + $zone_expiracy = '1w', + $zone_ns = [], + $zone_xfers = undef, + $zone_masters = undef, + $zone_forwarders = undef, + $zone_origin = undef, + $zone_notify = undef, + $is_slave = false, ) { include ::bind::params @@ -48,6 +49,7 @@ validate_bool($is_slave) validate_bool($is_dynamic) validate_array($allow_update) + validate_array($allow_update_cidr) validate_string($transfer_source) validate_string($zone_type) validate_string($zone_ttl) @@ -60,7 +62,7 @@ validate_string($zone_origin) - # add backwards support for is_slave parameter + # add backwards support for is_slave parameter if ($is_slave) and ($zone_type == 'master') { warning('$is_slave is deprecated. You should set $zone_type = \'slave\'') $int_zone_type = 'slave' diff --git a/templates/zone-master.erb b/templates/zone-master.erb index 5a5fbc2..1722057 100644 --- a/templates/zone-master.erb +++ b/templates/zone-master.erb @@ -1,6 +1,6 @@ <%- -if @is_dynamic and @allow_update.empty? - raise(Puppet::ParseError, "allow_update is empty for dynamic zone '#{name}'") +if @is_dynamic and (@allow_update.empty? and @allow_update_cidr.empty?) + raise(Puppet::ParseError, "Both allow_update and allow_update_cidr are empty for dynamic zone '#{name}'") end -%> # File managed by puppet @@ -17,7 +17,8 @@ zone "<%= @name %>" IN { allow-transfer { none; }; <% end -%> <% if @is_dynamic -%> - allow-update { key <%= Array(@allow_update).join('.; key ') -%>.; }; + allow-update { <% if ![nil, '', :undef].include?(@allow_update) -%>key <%= Array(@allow_update).join('.; key ') -%>.;<% end + -%><% if ![nil, '', :undef].include?(@allow_update_cidr) -%> <%= Array(@allow_update_cidr).join('; ') -%>;<% end -%> }; <% end -%> allow-query { any; }; notify yes; From 64b2d53f9be92887b154e31acab8c2203b766e9f Mon Sep 17 00:00:00 2001 From: Davide Ferrari Date: Mon, 11 Jan 2016 16:31:42 +0100 Subject: [PATCH 2/2] Use empty method to check arrays --- templates/zone-master.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/zone-master.erb b/templates/zone-master.erb index 1722057..5470072 100644 --- a/templates/zone-master.erb +++ b/templates/zone-master.erb @@ -17,8 +17,8 @@ zone "<%= @name %>" IN { allow-transfer { none; }; <% end -%> <% if @is_dynamic -%> - allow-update { <% if ![nil, '', :undef].include?(@allow_update) -%>key <%= Array(@allow_update).join('.; key ') -%>.;<% end - -%><% if ![nil, '', :undef].include?(@allow_update_cidr) -%> <%= Array(@allow_update_cidr).join('; ') -%>;<% end -%> }; + allow-update { <% if !@allow_update.empty? -%>key <%= Array(@allow_update).join('.; key ') -%>.;<% end + -%><% if !@allow_update_cidr.empty? -%> <%= Array(@allow_update_cidr).join('; ') -%>;<% end -%> }; <% end -%> allow-query { any; }; notify yes;