Distro packaging includes a lot of configuration files that this module tries
and fails to get rid of, but with exclusions. Those don't always work for
mysterious reasons. Leave the distributed files intact as much as possible,
with just the necessary files touched to effect the desired configuration.
Also, make inclusion of named.conf.local optional (default false) and stop
ensuring that there's at least an empty one.
`dnssec-keygen` uses `/dev/random` by default, but this is slow in some
scenarios where `/dev/urandom` is both faster and provides sufficient utility.
Allow override via the `bind::random_device` hiera key.
Several record types do not function correctly with the `resource_record` type
unless their values are specified as fully-qualified names with a trailing dot.
This adds clarifying information to the documentation and fixes a couple of
examples which are actually broken.
The incremental update change made NS record updates work for non-glue NS
records, but broke `ensure => absent` because there is no semantic guarantee
that the contents of the `data` member match what's in DNS. Set math ensures
that hilarity ensues.
Both the guts of the PuppetBind::Provider::Nsupdate module and the type method
of the dns_rr(nsupdate) provider produce and expect the type expressed as a
string, but the resource_record(nsupdate) provider's type method produces
symbols. This accidentally worked for a while, then it didn't. Also, in
quoted_type? that's supposed to be an array of strings, not a quoted string.
`validate_bool` validates that the passed value(s) are boolean, not that they
are true. Reformulate the calls to `unless` blocks, and remove the check for
"dynamic implies master" since setting `dynamic` to true is 1) the default and
2) does not cause any change to configuration text or manifest behavior when
the zone is not master.
Add a parameter to `bind::zone` which indicates whether a zone is dynamic or
not. This has the effect of allowing puppet to manage the zone file rather than
simply initialize it. This change also introduces more appropriate handling of
slave and stub zones, so that puppet will not populate a stock zone file,
forcing the nameserver to do a zone transfer when a zone is created.
Also, there is now a substancial amount of validation in the `bind::zone` class
in order to prevent invalid parameter combinations, so that validity may be
assumed elsewhere in the manifest and in the configuration template.
Compute the adds and deletes required to get from existing RRData to new RRData
and perform just those operations instead of doing a complete drop/add of the
entire RRData set. Also during an update, do adds before deletes. This
eliminates the existence gap and fixes#29
stub and slave zones need to be overwritten with data from their master server
in a reasonable timeframe. Drop all of the intervals in the db.empty SOA down
to sub-minute values to speed convergence.