I really like the way thias/bind handled named.conf. I also really like the way camptocamp/bind used resources for record management. Can't use them both so I smooshed them together.
There aren't too many changes to what either did separately. I've tweaked some variable and parameter names to match up with conventions. Check out params.pp and conf.pp for available conf file params and defaults.
Manages bind configuration under Debian / Ubuntu and CentOS.
This module is provided by Camptocamp
In order to not have any path problem, you should add the following line in some globally included .pp file:
Exec {
path => '/some/relevant/path:/some/other:...',
}
For example:
Exec {
path => '/bin:/sbin:/usr/sbin:/usr/bin',
}
- bind
This class must be declared before using the definitions in this module.
- bind::a
- bind::generate
- bind::mx
- bind::record
- bind::zone
Creates an A record (or a series thereof).
bind::a { 'Hosts in example.com':
ensure => 'present',
zone => 'example.com',
ptr => false,
hash_data => {
'host1' => { owner => '192.168.0.1', },
'host2' => { owner => '192.168.0.2', },
},
}
Creates a $GENERATE directive for a specific zone
bind::generate {'a-records':
zone => 'test.tld',
range => '2-100',
record_type => 'A',
lhs => 'dhcp-$', # creates dhcp-2.test.tld, dhcp-3.test.tld …
rhs => '10.10.0.$', # creates IP 10.10.0.2, 10.10.0.3 …
}
Creates an MX record.
bind::mx {'mx1':
zone => 'domain.ltd',
owner => '@',
priority => 1,
host => 'mail.domain.ltd',
}
Creates a generic record (or a series thereof).
bind::record {'CNAME foo.example.com':
zone => 'foo.example.com',
record_type => 'CNAME',
hash_data => {
'ldap' => { owner => 'ldap.internal', },
'voip' => { owner => 'voip.internal', },
}
}
Creates a zone.
bind::zone {'test.tld':
zone_contact => 'contact.test.tld',
zone_ns => ['ns0.test.tld'],
zone_serial => '2012112901',
zone_ttl => '604800',
zone_origin => 'test.tld',
}
Creates a key for dynamic zones. The 'secret' value is the key generated by dnssec-keygen.
bind::key { 'key_dyn.test.tld':
ensure => present,
secret => 'xUjDQqpBHao/o7mR2dza2/Tv2DQVo9pEuMfMwhdfzeaEFZAvwA='
}
bind::zone {'dyn.test.tld':
zone_contact => 'contact.test.tld',
zone_ns => ['ns0.test.tld'],
zone_serial => '2012112901',
zone_ttl => '604800',
zone_origin => 'dyn.test.tld',
is_dynamic => true,
allow_update => ['key_dyn.test.tld']
}
Please report bugs and feature request using GitHub issue tracker.
For pull requests, it is very much appreciated to check your Puppet manifest with puppet-lint to follow the recommended Puppet style guidelines from the Puppet Labs style guide.
Copyright (c) 2013 mailto:[email protected] All rights reserved.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.