Version information
Start using this module
Add this module to your Puppetfile:
mod 'thias-bind', '0.3.2'
Learn more about managing modules with a PuppetfileDocumentation
puppet-bind
Overview
Install and enable a BIND DNS server, manage its main configuration and install and manage its DNS zone files.
bind::server
: Main class to install and enable the server.bind::server::conf
: Main definition to configure the server.bind::server::file
: Definition to manage zone files.
The split between server
and server::conf
allows to use a static file or
a different template-based file for the main named.conf
file if needed,
while still using this module for the main package, service and managing zone
files. This is useful if you have a large and/or complex named.conf file.
Examples
Here is a typical LAN recursive caching DNS server configuration :
include bind::server
bind::server::conf { '/etc/named.conf':
listen_on_addr => [ 'any' ],
listen_on_v6_addr => [ 'any' ],
forwarders => [ '8.8.8.8', '8.8.4.4' ],
allow_query => [ 'localnets' ],
zones => {
'myzone.lan' => [
'type master',
'file "myzone.lan"',
],
'1.168.192.in-addr.arpa' => [
'type master',
'file "1.168.192.in-addr.arpa"',
],
},
}
The zone files for the above could then be managed like this :
bind::server::file { 'myzone.lan':
source => 'puppet:///modules/mymodule/dns/myzone.lan',
}
bind::server::file { '1.168.192.in-addr.arpa':
source => 'puppet:///modules/mymodule/dns/1.168.192.in-addr.arpa',
}
Then if all source files are in the same location and named after the zone :
bind::server::file { [ 'myzone.lan', '1.168.192.in-addr.arpa' ]:
source_base => 'puppet:///modules/mymodule/dns/',
}
Since SELinux offers a very high level of protection, chrooting is quite redundant, so it's disabled by default. You can nevertheless enable it if you want :
class { 'bind::server': chroot => true }
bind::server::conf { '/etc/named.conf':
# [... same as before ...]
},
bind::server::file { 'myzone.lan':
zonedir => '/var/named/chroot/var/named',
source => 'puppet:///files/dns/myzone.lan',
}
To avoid repeating the zonedir
parameter each time, you can also use :
Bind::Server::File { zonedir => '/var/named/chroot/var/named' }
2013-04-19 - 0.3.2
- Use @varname syntax in templates to silence puppet 3.2 warnings.
2013-04-10 - 0.3.1
- Add support for $allow_transfer.
- Add support for $ensure on server::file, enabling clean zone file removal.
2013-03-08 - 0.3.0
- Change to 2 space indent.
- Major update to the README and use markdown.
- Minor cosmetic cleanups.
- Change default for $chroot to false, SELinux is sufficient on RHEL5+.
2012-12-18 - 0.2.5
- Change the SELinux type of the log directory back to the original.
2012-09-19 - 0.2.4
- Update README to make the main example more useful.
- Support $source_base for easy inclusion of multiple zone files as-is.
2012-07-17 - 0.2.3
- Add support for "include" lines in named.conf.
2012-06-22 - 0.2.2
- Add support for a few new configuration values in the main template.
- Require package for files, for the usual parent directory to exist.
- Minot updates to the README.
2012-04-23 - 0.2.1
- Clean up the module to match current puppetlabs guidelines.
- Force hash sorting in the template for puppet 2.7+ compatibility.
Copyright (C) 2011-2013 Matthias Saou Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.