Skip to content

Commit b3c8421

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

File tree

3 files changed

+33
-10
lines changed

3 files changed

+33
-10
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: 22 additions & 9 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
@@ -82,17 +83,20 @@
8283
}
8384

8485
$zone_file_mode = $zone_type ? {
85-
'master' => $dynamic ? {
86-
true => 'init',
87-
false => 'managed',
86+
'master' => $manage_contents ? {
87+
true => $dynamic ? {
88+
true => 'init',
89+
false => 'managed',
90+
},
91+
false => 'unmanaged',
8892
},
89-
'slave' => 'allowed',
90-
'hint' => 'managed',
91-
'stub' => 'allowed',
92-
default => 'absent',
93+
'slave' => 'allowed',
94+
'hint' => 'managed',
95+
'stub' => 'allowed',
96+
default => 'absent',
9397
}
9498

95-
if member(['init', 'managed', 'allowed'], $zone_file_mode) {
99+
if member(['init', 'managed', 'unmanaged', 'allowed'], $zone_file_mode) {
96100
file { "${cachedir}/${name}":
97101
ensure => directory,
98102
owner => $bind_user,
@@ -101,6 +105,15 @@
101105
require => Package['bind'],
102106
}
103107

108+
if member(['unmanaged'], $zone_file_mode) {
109+
file { "${cachedir}/${name}/${zone_file}":
110+
ensure => present,
111+
owner => $bind_user,
112+
group => $bind_group,
113+
mode => '0644';
114+
}
115+
}
116+
104117
if member(['init', 'managed'], $zone_file_mode) {
105118
file { "${cachedir}/${name}/${zone_file}":
106119
ensure => present,
@@ -121,7 +134,7 @@
121134
subscribe => File["${cachedir}/${name}/${zone_file}"],
122135
}
123136
}
124-
} elsif $zone_file_mode == 'absent' {
137+
} elsif $zone_file_mode == 'absent' and $manage_contents {
125138
file { "${cachedir}/${name}":
126139
ensure => absent,
127140
}

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)