Skip to content

Commit db02bb4

Browse files
committed
Add support for unmanaged zone contents for externally-managed zones
1 parent b365ddd commit db02bb4

File tree

3 files changed

+36
-9
lines changed

3 files changed

+36
-9
lines changed

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,16 @@ bind::zone { 'example.com':
192192
}
193193
```
194194

195+
A master zone for which the zone contents are managed by an external tool (this module just ensures the zone exists
196+
and is served). Use of `resource_records` for an unmanaged zone is not supported.
197+
198+
```
199+
bind::zone { 'example.com':
200+
zone_type => 'master',
201+
manage_contents => false,
202+
}
203+
```
204+
195205
A slave zone which allows notifications from servers matched by IP:
196206

197207
```

manifests/zone.pp

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
$forwarders = '',
2020
$forward = '',
2121
$source = '',
22+
$manage_contents = true,
2223
$forwarders_port = 53,
2324
) {
2425
# where there is a zone, there is a server
@@ -81,18 +82,25 @@
8182
fail("source may only be provided for bind::zone resources with zone_type 'master' or 'hint'")
8283
}
8384

85+
if ($manage_contents == false and $zone_type != 'master') {
86+
fail("manage_contents may only be disabled with zone_type 'master'")
87+
}
88+
8489
$zone_file_mode = $zone_type ? {
85-
'master' => $dynamic ? {
86-
true => 'init',
87-
false => 'managed',
90+
'master' => $manage_contents ? {
91+
true => $dynamic ? {
92+
true => 'init',
93+
false => 'managed',
94+
},
95+
false => 'unmanaged',
8896
},
89-
'slave' => 'allowed',
90-
'hint' => 'managed',
91-
'stub' => 'allowed',
92-
default => 'absent',
97+
'slave' => 'allowed',
98+
'hint' => 'managed',
99+
'stub' => 'allowed',
100+
default => 'absent',
93101
}
94102

95-
if member(['init', 'managed', 'allowed'], $zone_file_mode) {
103+
if member(['init', 'managed', 'unmanaged', 'allowed'], $zone_file_mode) {
96104
file { "${cachedir}/${name}":
97105
ensure => directory,
98106
owner => $bind_user,
@@ -101,6 +109,15 @@
101109
require => Package['bind'],
102110
}
103111

112+
if member(['unmanaged'], $zone_file_mode) {
113+
file { "${cachedir}/${name}/${zone_file}":
114+
ensure => present,
115+
owner => $bind_user,
116+
group => $bind_group,
117+
mode => '0644';
118+
}
119+
}
120+
104121
if member(['init', 'managed'], $zone_file_mode) {
105122
file { "${cachedir}/${name}/${zone_file}":
106123
ensure => present,

templates/zone.conf.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ zone "<%= @_domain %>" {
1010
key-directory "<%= @cachedir %>/<%= @name %>";
1111
<%- end -%>
1212
file "<%= @cachedir %>/<%= @name %>/<%= @zone_file %>.signed";
13-
<%- elsif %w(init managed allowed).include? @zone_file_mode -%>
13+
<%- elsif %w(init managed unmanaged allowed).include? @zone_file_mode -%>
1414
file "<%= @cachedir %>/<%= @name %>/<%= @zone_file %>";
1515
<%- end -%>
1616
<%- if %w(master slave).include? @zone_type

0 commit comments

Comments
 (0)