Version information
This version is compatible with:
- Puppet Enterprise 2023.8.x, 2023.7.x, 2023.6.x, 2023.5.x, 2023.4.x, 2023.3.x, 2023.2.x, 2023.1.x, 2023.0.x, 2021.7.x, 2021.6.x, 2021.5.x, 2021.4.x, 2021.3.x, 2021.2.x, 2021.1.x, 2021.0.x
- Puppet >= 7.0.0 < 9.0.0
- Archlinux , , , , , , , , , , , , ,
Start using this module
Add this module to your Puppetfile:
mod 'puppet-unbound', '7.0.0'
Learn more about managing modules with a PuppetfileDocumentation
Puppet powered DNS with Unbound
A puppet module for the Unbound caching resolver.
Supported Platforms
- Debian
- FreeBSD
- OpenBSD
- OS X (macports)
- RHEL clones (with EPEL)
- openSUSE (local repo or obs://server:dns)
- Archlinux
For an up2date list of supported operating systems and their versions, please check the metadata.json.
Requirements
To use this module requires at least unbound 1.6.6. Please also consult metadata.json to understand the minimum puppet version and any other module dependencies.
Usage
Server Setup
At minimum you should setup the interfaces to listen on and allow access to a few subnets. This will tell unbound which interfaces to listen on, and which networks to allow queries from.
class { "unbound":
interface => ["::0","0.0.0.0"],
access => ["10.0.0.0/20","::1"],
}
Or, using hiera
unbound::interface:
- '::0'
- '0.0.0.0'
unbound::access:
- '10.0.0.0/20'
- '::1'
Stub Zones
These are zones for which you have an authoritative name server and want to direct queries.
unbound::stub { "lan.example.com":
address => '10.0.0.10',
insecure => true,
}
unbound::stub { "0.0.10.in-addr.arpa.":
address => '10.0.0.10',
insecure => true,
}
# port can be specified
unbound::stub { "0.0.10.in-addr.arpa.":
address => '10.0.0.10@10053',
insecure => true,
}
# address can be an array along with nameservers.
# in the following case, generated conf would be as follows:
#
# stub-addr: 10.0.0.53
# stub-addr: 10.0.0.10@10053
# stub-host: ns1.example.com
# stub-host: ns2.example.com
#
# note that conf will be generated in the same order provided.
unbound::stub { "10.0.10.in-addr.arpa.":
address => [ 10.0.0.53', '10.0.0.10@10053'],
namservers => [ 'ns1.example.com', 'ns2.example.com' ],
}
Or, using hiera
unbound::stub:
'10.0.10.in-addr.arpa.':
address:
- '10.0.0.53
- '10.0.0.10@10053'
nameserveres:
- 'ns1.example.com'
- 'ns2.example.com'
Unless you have DNSSEC for your private zones, they are considered insecure,
noted by insecure => true
.
Static DNS records
For overriding DNS record in zone.
unbound::record { 'test.example.tld':
type => 'A',
content => '10.0.0.1',
ttl => '14400',
}
Or, using hiera
unbound::record:
'test.example.tld':
type: 'A'
content: '10.0.0.1'
ttl: '14400'
Forward Zones
Setup a forward zone with a list of address from which you should resolve queries. You can configure a forward zone with something like the following:
unbound::forward { '.':
address => [
'8.8.8.8',
'8.8.4.4'
]
}
Or, using hiera
unbound::forward:
'.':
address:
- '8.8.8.8'
- '8.8.4.4'
This means that your server will use the Google DNS servers for any zones that it doesn't know how to reach and cache the result.
Domain Insecure
Sets domain name to be insecure, DNSSEC chain of trust is ignored towards the domain name. So a trust anchor above the domain name can not make the domain secure with a DS record, such a DS record is then ignored. Also keys from DLV are ignored for the domain. Can be given multiple times to specify multiple domains that are treated as if unsigned. If you set trust anchors for the domain they override this setting (and the domain is secured).
class {'unbound:'
domain_insecure => ['example.com', example.org']
}
Or, using hiera
unbound::domain_insecure:
- example.com
- example.org
Local Zones
Configure a local zone. The type determines the answer to give if there is no match from local-data. The types are deny, refuse, static, transparent, redirect, nodefault, typetranspar- ent, inform, inform_deny, always_transparent, always_refuse, always_nxdomain. See local-zone in the unbound documentation for more information. You can configure a local-zone with something like the following.
class {'unbound:'
local_zone => { '10.0.10.in-addr.arpa.' => 'nodefault'}
}
Or, using unbound::localzone
unbound::localzone { '10.0.10.in-addr.arpa.':
type => 'nodefault'
}
Or, using hiera
unbound::local_zone:
10.0.10.in-addr.arpa.: nodefault
11.0.10.in-addr.arpa.: nodefault
Fine grain access-control
class { "unbound":
interface => ["::0","0.0.0.0"],
access => ["10.0.0.0/20", "10.0.0.5/32 reject", "::1 allow_snoop"],
}
The access option allows to pass the action for each subnets, if the action is not provided we assume it’s 'allow'.
Adding arbitrary unbound configuration parameters
class { "unbound":
interface => ["::0","0.0.0.0"],
access => ["10.0.0.0/20","::1"],
custom_server_conf => [ 'include: "/etc/unbound/conf.d/*.conf"' ],
}
The custom_server_conf option allows the addition of arbitrary configuration parameters to your server configuration. It expects an array, and each element gets added to the configuration file on a separate line. In the example above, we instruct Unbound to load other configuration files from a subdirectory.
Remote Control
The Unbound remote controls the use of the unbound-control utility to issue commands to the Unbound daemon process.
class { "unbound::remote":
enable => true,
}
On some platforms this is needed to function correctly for things like service reloads.
Skipping hints download
In the case you're only building a caching forwarder and don't do iterative lookups you might not want to download the hints file containing the root nameservers because you don't need it, or you also might not be able to download it anyway because your server is firewalled which would cause the module would hang on trying to download the hints file. To skip the download set the skip_roothints_download parameter to true.
class { "unbound":
skip_roothints_download => true,
}
More information
You can find more information about Unbound and its configuration items at unbound.net.
Contribute
Please help me make this module awesome! Send pull requests and file issues.
Reference
Table of Contents
Classes
unbound
: Installs and configures Unbound, the caching DNS resolver from NLnet Labsunbound::remote
: Class: unbound::remote Configure remote control of the unbound daemon process === Parameters: [enable] (optional) The option is used t
Defined types
unbound::forward
: Class: unbound::forward Configures a zone for DNS forwarding == Parameters: [zone] (required) the name of the zone. [address] IPunbound::localzone
: Class: unbound::localzone Configures a local zone. The default zones are localhost, reverse 127.0.0.1 and ::1, and the AS112 zones. Theunbound::record
: Class: unbound::record Create an unbound static DNS record override == Parameters: [content] (required) The name of the record (ip addunbound::stub
: Class: unbound::stub Create an unbound stub zone for caching upstream name resolvers === Parameters: [address] (required) IP address o
Data types
Unbound::Access_control
Unbound::Address
: Patterns copied from Stdlib::IPUnbound::Chroot
Unbound::Hints_file
Unbound::Local_zone
: custom enum type for local-zone typesUnbound::Local_zone_override
Unbound::Local_zone_type
: custom enum type for local-zone typesUnbound::Module
: list of valid modulesUnbound::Range
Unbound::Resource_record_type
: custom type for resource record used for local-dataUnbound::Rpz
: Type used to validate rzp configuerationUnbound::Rpz::Action
: list of valid rpz actionsUnbound::Size
Classes
unbound
Installs and configures Unbound, the caching DNS resolver from NLnet Labs
Parameters
The following parameters are available in the unbound
class:
hints_file
hints_file_content
unbound_version
update_root_hints
manage_service
verbosity
statistics_interval
statistics_cumulative
extended_statistics
num_threads
port
interface
interface_automatic
outgoing_interface
outgoing_range
outgoing_port_permit
outgoing_port_avoid
outgoing_port_permit_first
outgoing_num_tcp
incoming_num_tcp
edns_buffer_size
max_udp_size
stream_wait_size
msg_cache_size
msg_cache_slabs
num_queries_per_thread
jostle_timeout
delay_close
unknown_server_time_limit
so_rcvbuf
so_sndbuf
so_reuseport
ip_transparent
ip_freebind
rrset_cache_size
rrset_cache_slabs
cache_max_ttl
cache_max_negative_ttl
cache_min_ttl
infra_host_ttl
infra_cache_numhosts
infra_cache_slabs
infra_cache_min_rtt
define_tag
do_ip4
do_ip6
prefer_ip6
do_udp
do_tcp
tcp_mss
tls_cert_bundle
tls_upstream
outgoing_tcp_mss
tcp_idle_timeout
edns_tcp_keepalive
edns_tcp_keepalive_timeout
tcp_upstream
udp_upstream_without_downstream
ssl_upstream
ssl_service_key
ssl_service_pem
ssl_port
tls_ciphers
tls_ciphersuites
use_systemd
do_daemonize
access_control
chroot
logfile
log_identity
log_time_ascii
log_queries
log_replies
log_tag_queryreply
log_local_actions
log_servfail
pidfile
hide_identity
identity
hide_version
version
hide_trustanchor
target_fetch_policy
harden_short_bufsize
harden_large_queries
harden_glue
harden_dnssec_stripped
harden_below_nxdomain
harden_referral_path
harden_algo_downgrade
use_caps_for_id
caps_whitlist
qname_minimisation
qname_minimisation_strict
private_address
private_domain
unwanted_reply_threshold
do_not_query_address
do_not_query_localhost
prefetch
prefetch_key
deny_any
rrset_roundrobin
minimal_responses
disable_dnssec_lame_check
trust_anchor_file
trust_anchor
trust_anchor_signaling
domain_insecure
val_sig_skew_min
val_sig_skew_max
val_bogus_ttl
val_clean_additional
val_log_level
val_permissive_mode
ignore_cd_flag
serve_expired
serve_expired_ttl
serve_expired_ttl_reset
serve_expired_reply_ttl
serve_expired_client_timeout
val_nsec3_keysize_iterations
add_holddown
del_holddown
keep_missing
permit_small_holddown
key_cache_size
key_cache_slabs
neg_cache_size
unblock_lan_zones
insecure_lan_zones
local_zone
local_data
local_data_ptr
local_zone_tag
local_zone_override
ratelimit
ratelimit_size
ratelimit_slabs
ratelimit_factor
ratelimit_for_domain
ratelimit_below_domain
ip_ratelimit
ip_ratelimit_size
ip_ratelimit_slabs
ip_ratelimit_factor
fast_server_permil
fast_server_num
forward
stub
record
access
confdir
directory
conf_d
config_file
control_enable
control_setup_path
control_path
fetch_client
group
keys_d
trusted_keys_file
module_config
owner
username
package_name
package_ensure
purge_unbound_conf_d
root_hints_url
runtime_dir
auto_trust_anchor_file
anchor_fetch_command
service_name
service_hasstatus
service_ensure
service_enable
validate_cmd
restart_cmd
custom_server_conf
skip_roothints_download
python_script
dns64_prefix
dns64_synthall
send_client_subnet
client_subnet_zone
client_subnet_always_forward
max_client_subnet_ipv6
max_client_subnet_ipv4
min_client_subnet_ipv6
min_client_subnet_ipv4
max_ecs_tree_size_ipv4
max_ecs_tree_size_ipv6
ipsecmod_enabled
ipsecmod_hook
ipsecmod_strict
ipsecmod_max_ttl
ipsecmod_ignore_bogus
ipsecmod_whitelist
backend
secret_seed
redis_server_host
redis_server_port
redis_timeout
unbound_conf_d
rpzs
hints_file
Data type: Unbound::Hints_file
File path to the root-hints. Set to 'builtin' to remove root-hint option from unbound.conf and use built-in hints.
Default value: "${confdir}/root.hints"
hints_file_content
Data type: Optional[String[1]]
Contents of the root hints file, if it's not remotely fetched.
Default value: undef
unbound_version
Data type: Optional[String[1]]
the version of the installed unbound instance. defaults to the fact, but you can overwrite it. this reduces the initial puppet runs from two to one
Default value: $facts['unbound_version']
update_root_hints
Data type: Enum['absent','present','unmanaged']
If set to true (and hints_file isn't set to 'builtin') a systemd timer will be configured to update the root hints file every month
Default value: fact('systemd') ? { true => 'present', default => 'unmanaged'
manage_service
Data type: Boolean
Default value: true
verbosity
Data type: Integer[0,5]
Default value: 1
statistics_interval
Data type: Optional[Integer]
Default value: undef
statistics_cumulative
Data type: Boolean
Default value: false
extended_statistics
Data type: Boolean
Default value: false
num_threads
Data type: Integer[1]
Default value: 1
port
Data type: Integer[0, 65535]
Default value: 53
interface
Data type: Array[String[1]]
Default value: []
interface_automatic
Data type: Boolean
Default value: false
outgoing_interface
Data type: Array[String[1]]
Default value: []
outgoing_range
Data type: Optional[Integer[1]]
Default value: undef
outgoing_port_permit
Data type: Unbound::Range
Default value: '32768-65535'
outgoing_port_avoid
Data type: Unbound::Range
Default value: '0-32767'
outgoing_port_permit_first
Data type: Boolean
Default value: true
outgoing_num_tcp
Data type: Optional[Integer[0]]
Default value: undef
incoming_num_tcp
Data type: Optional[Integer[0]]
Default value: undef
edns_buffer_size
Data type: Integer[0,4096]
Default value: 1232
max_udp_size
Data type: Optional[Integer[0,65536]]
Default value: undef
stream_wait_size
Data type: Optional[Unbound::Size]
Default value: undef
msg_cache_size
Data type: Optional[Unbound::Size]
Default value: undef
msg_cache_slabs
Data type: Optional[Integer]
Default value: undef
num_queries_per_thread
Data type: Optional[Integer]
Default value: undef
jostle_timeout
Data type: Optional[Integer[1]]
Default value: undef
delay_close
Data type: Optional[Integer[0]]
Default value: undef
unknown_server_time_limit
Data type: Optional[Integer[1]]
Default value: undef
so_rcvbuf
Data type: Optional[Unbound::Size]
Default value: undef
so_sndbuf
Data type: Optional[Unbound::Size]
Default value: undef
so_reuseport
Data type: Boolean
Default value: false
ip_transparent
Data type: Boolean
Default value: false
ip_freebind
Data type: Boolean
Default value: false
rrset_cache_size
Data type: Optional[Unbound::Size]
Default value: undef
rrset_cache_slabs
Data type: Optional[Integer]
Default value: undef
cache_max_ttl
Data type: Optional[Integer]
Default value: undef
cache_max_negative_ttl
Data type: Optional[Integer]
Default value: undef
cache_min_ttl
Data type: Optional[Integer]
Default value: undef
infra_host_ttl
Data type: Optional[Integer]
Default value: undef
infra_cache_numhosts
Data type: Optional[Integer]
Default value: undef
infra_cache_slabs
Data type: Optional[Integer]
Default value: undef
infra_cache_min_rtt
Data type: Optional[Integer]
Default value: undef
define_tag
Data type: Array[String[1]]
Default value: []
do_ip4
Data type: Boolean
Default value: true
do_ip6
Data type: Boolean
Default value: true
prefer_ip6
Data type: Boolean
Default value: false
do_udp
Data type: Boolean
Default value: true
do_tcp
Data type: Boolean
Default value: true
tcp_mss
Data type: Optional[Integer[0]]
Default value: undef
tls_cert_bundle
Data type: Optional[Stdlib::Absolutepath]
Default value: undef
tls_upstream
Data type: Boolean
Default value: false
outgoing_tcp_mss
Data type: Optional[Integer[0]]
Default value: undef
tcp_idle_timeout
Data type: Optional[Integer[0]]
Default value: undef
edns_tcp_keepalive
Data type: Boolean
Default value: false
edns_tcp_keepalive_timeout
Data type: Optional[Integer[0]]
Default value: undef
tcp_upstream
Data type: Boolean
Default value: false
udp_upstream_without_downstream
Data type: Boolean
Default value: false
ssl_upstream
Data type: Boolean
Default value: false
ssl_service_key
Data type: Optional[Stdlib::Absolutepath]
Default value: undef
ssl_service_pem
Data type: Optional[Stdlib::Absolutepath]
Default value: undef
ssl_port
Data type: Optional[Integer[0,65535]]
Default value: undef
tls_ciphers
Data type: Optional[String[1]]
Default value: undef
tls_ciphersuites
Data type: Optional[String[1]]
Default value: undef
use_systemd
Data type: Boolean
Default value: false
do_daemonize
Data type: Boolean
Default value: true
access_control
Data type: Hash[String[1], Unbound::Access_control]
Default value: {}
chroot
Data type: Optional[Unbound::Chroot]
Default value: undef
logfile
Data type: Optional[Stdlib::Absolutepath]
Default value: undef
log_identity
Data type: Optional[String[1]]
Default value: undef
log_time_ascii
Data type: Boolean
Default value: false
log_queries
Data type: Boolean
Default value: false
log_replies
Data type: Boolean
Default value: false
log_tag_queryreply
Data type: Boolean
Default value: false
log_local_actions
Data type: Boolean
Default value: false
log_servfail
Data type: Boolean
Default value: false
pidfile
Data type: Stdlib::Absolutepath
Default value: '/var/run/unbound/unbound.pid'
hide_identity
Data type: Boolean
Default value: true
identity
Data type: Optional[String[1]]
Default value: undef
hide_version
Data type: Boolean
Default value: true
version
Data type: Optional[String[1]]
Default value: undef
hide_trustanchor
Data type: Boolean
Default value: true
target_fetch_policy
Data type: Array[Integer]
Default value: []
harden_short_bufsize
Data type: Boolean
Default value: false
harden_large_queries
Data type: Boolean
Default value: false
harden_glue
Data type: Boolean
Default value: true
harden_dnssec_stripped
Data type: Boolean
Default value: true
harden_below_nxdomain
Data type: Boolean
Default value: true
harden_referral_path
Data type: Boolean
Default value: false
harden_algo_downgrade
Data type: Boolean
Default value: false
use_caps_for_id
Data type: Boolean
Default value: false
caps_whitlist
Data type: Array[String[1]]
Default value: []
qname_minimisation
Data type: Boolean
Default value: false
qname_minimisation_strict
Data type: Boolean
Default value: false
private_address
Data type: Array[String[1]]
Default value: []
private_domain
Data type: Array[String[1]]
Default value: []
unwanted_reply_threshold
Data type: Integer[0]
Default value: 10000000
do_not_query_address
Data type: Array[String[1]]
Default value: []
do_not_query_localhost
Data type: Boolean
Default value: true
prefetch
Data type: Boolean
Default value: false
prefetch_key
Data type: Boolean
Default value: false
deny_any
Data type: Boolean
Default value: false
rrset_roundrobin
Data type: Boolean
Default value: false
minimal_responses
Data type: Boolean
Default value: false
disable_dnssec_lame_check
Data type: Boolean
Default value: false
trust_anchor_file
Data type: Optional[Stdlib::Absolutepath]
Default value: undef
trust_anchor
Data type: Array[String[1]]
Default value: []
trust_anchor_signaling
Data type: Boolean
Default value: true
domain_insecure
Data type: Array[String[1]]
Default value: []
val_sig_skew_min
Data type: Optional[Integer[1]]
Default value: undef
val_sig_skew_max
Data type: Optional[Integer[1]]
Default value: undef
val_bogus_ttl
Data type: Optional[Integer[1]]
Default value: undef
val_clean_additional
Data type: Boolean
Default value: true
val_log_level
Data type: Optional[Integer[0,2]]
Default value: undef
val_permissive_mode
Data type: Boolean
Default value: false
ignore_cd_flag
Data type: Boolean
Default value: false
serve_expired
Data type: Boolean
Default value: false
serve_expired_ttl
Data type: Optional[Integer[0]]
Default value: undef
serve_expired_ttl_reset
Data type: Boolean
Default value: false
serve_expired_reply_ttl
Data type: Optional[Integer[0]]
Default value: undef
serve_expired_client_timeout
Data type: Optional[Integer[0]]
Default value: undef
val_nsec3_keysize_iterations
Data type: Array[Integer[1]]
Default value: []
add_holddown
Data type: Optional[Integer[0]]
Default value: undef
del_holddown
Data type: Optional[Integer[0]]
Default value: undef
keep_missing
Data type: Optional[Integer[0]]
Default value: undef
permit_small_holddown
Data type: Boolean
Default value: false
key_cache_size
Data type: Optional[Unbound::Size]
Default value: undef
key_cache_slabs
Data type: Optional[Integer]
Default value: undef
neg_cache_size
Data type: Optional[Unbound::Size]
Default value: undef
unblock_lan_zones
Data type: Boolean
Default value: false
insecure_lan_zones
Data type: Boolean
Default value: false
local_zone
Data type: Unbound::Local_zone
Default value: {}
local_data
Data type: Array[String[1]]
Default value: []
local_data_ptr
Data type: Array[String[1]]
Default value: []
local_zone_tag
Data type: Hash[String[1], Array[String[1]]]
Default value: {}
local_zone_override
Data type: Hash[String[1], Unbound::Local_zone_override]
Default value: {}
ratelimit
Data type: Optional[Integer[0]]
Default value: undef
ratelimit_size
Data type: Optional[Unbound::Size]
Default value: undef
ratelimit_slabs
Data type: Optional[Integer[0]]
Default value: undef
ratelimit_factor
Data type: Optional[Integer[0]]
Default value: undef
ratelimit_for_domain
Data type: Hash[String[1], Integer[0]]
Default value: {}
ratelimit_below_domain
Data type: Hash[String[1], Integer[0]]
Default value: {}
ip_ratelimit
Data type: Optional[Integer[0]]
Default value: undef
ip_ratelimit_size
Data type: Optional[Unbound::Size]
Default value: undef
ip_ratelimit_slabs
Data type: Optional[Integer[0]]
Default value: undef
ip_ratelimit_factor
Data type: Optional[Integer[0]]
Default value: undef
fast_server_permil
Data type: Optional[Integer[0,1000]]
Default value: undef
fast_server_num
Data type: Optional[Integer[1]]
Default value: undef
forward
Data type: Hash
Default value: {}
stub
Data type: Hash
Default value: {}
record
Data type: Hash
Default value: {}
access
Data type: Array
Default value: ['::1', '127.0.0.1']
confdir
Data type: String[1]
Default value: '/etc/unbound'
directory
Data type: Stdlib::Absolutepath
Default value: $confdir
conf_d
Data type: String[1]
Default value: "${confdir}/conf.d"
config_file
Data type: String[1]
Default value: "${confdir}/unbound.conf"
control_enable
Data type: Boolean
Default value: false
control_setup_path
Data type: String[1]
Default value: '/usr/sbin/unbound-control-setup'
control_path
Data type: String[1]
Default value: '/usr/sbin/unbound-control'
fetch_client
Data type: String[1]
Default value: 'wget -O'
group
Data type: String[1]
Default value: 'unbound'
keys_d
Data type: String[1]
Default value: "${confdir}/keys.d"
trusted_keys_file
Data type: Stdlib::Absolutepath
Default value: "${keys_d}/*.key"
module_config
Data type: Array[Unbound::Module]
Default value: []
owner
Data type: String[1]
Default value: 'unbound'
username
Data type: String[1]
Default value: $owner
package_name
Data type: String
Default value: 'unbound'
package_ensure
Data type: String[1]
Default value: 'installed'
purge_unbound_conf_d
Data type: Boolean
Default value: false
root_hints_url
Data type: String[1]
Default value: 'https://www.internic.net/domain/named.root'
runtime_dir
Data type: Stdlib::Absolutepath
Default value: $confdir
auto_trust_anchor_file
Data type: Stdlib::Absolutepath
Default value: "${runtime_dir}/root.key"
anchor_fetch_command
Data type: String[1]
Default value: "unbound-anchor -a ${auto_trust_anchor_file}"
service_name
Data type: String[1]
Default value: 'unbound'
service_hasstatus
Data type: Boolean
Default value: true
service_ensure
Data type: Enum['running', 'stopped']
Default value: 'running'
service_enable
Data type: Boolean
Default value: true
validate_cmd
Data type: String[1]
Default value: '/usr/sbin/unbound-checkconf %'
restart_cmd
Data type: String[1]
Default value: "/bin/systemctl restart ${service_name}"
custom_server_conf
Data type: Array[String[1]]
Default value: []
skip_roothints_download
Data type: Boolean
Default value: false
python_script
Data type: Optional[Stdlib::Absolutepath]
Default value: undef
dns64_prefix
Data type: String[1]
Default value: '64:ff9b::/96'
dns64_synthall
Data type: Boolean
Default value: false
send_client_subnet
Data type: Array[String[1]]
Default value: []
client_subnet_zone
Data type: Array[String[1]]
Default value: []
client_subnet_always_forward
Data type: Boolean
Default value: false
max_client_subnet_ipv6
Data type: Integer[0,128]
Default value: 56
max_client_subnet_ipv4
Data type: Integer[0,32]
Default value: 24
min_client_subnet_ipv6
Data type: Optional[Integer[0,128]]
Default value: undef
min_client_subnet_ipv4
Data type: Optional[Integer[0,32]]
Default value: undef
max_ecs_tree_size_ipv4
Data type: Optional[Integer[0]]
Default value: undef
max_ecs_tree_size_ipv6
Data type: Optional[Integer[0]]
Default value: undef
ipsecmod_enabled
Data type: Boolean
Default value: true
ipsecmod_hook
Data type: Optional[Stdlib::Absolutepath]
Default value: undef
ipsecmod_strict
Data type: Boolean
Default value: false
ipsecmod_max_ttl
Data type: Integer[1]
Default value: 3600
ipsecmod_ignore_bogus
Data type: Boolean
Default value: false
ipsecmod_whitelist
Data type: Array[String[1]]
Default value: []
backend
Data type: Optional[String[1]]
Default value: undef
secret_seed
Data type: String[1]
Default value: 'default'
redis_server_host
Data type: String[1]
Default value: '127.0.0.1'
redis_server_port
Data type: Integer[1,65536]
Default value: 6379
redis_timeout
Data type: Integer[1]
Default value: 100
unbound_conf_d
Data type: Stdlib::Absolutepath
Default value: "${confdir}/unbound.conf.d"
rpzs
Data type: Hash[String[1], Unbound::Rpz]
Default value: {}
unbound::remote
Class: unbound::remote
Configure remote control of the unbound daemon process
=== Parameters:
[enable] (optional) The option is used to enable remote control, default is false. If turned off, the server does not listen for control.
[interface] (optional) Give IPv4 or IPv6 addresses to listen on for control commands. By default localhost (127.0.0.1 and ::1) is listened.
[port] (optional) The port number to listen on for control commands, default is 8953. If you change this port number, and permissions have been dropped, a reload is not sufficient to open the port again, you must then restart.
[server_key_file] (optional) Path to the server private key, by default unbound_server.key. This file is generated by the unbound-control-setup utility. This file is used by the unbound server, but not by unbound-control.
[server_cert_file] (optional) Path to the server self signed certificate, by default unbound_server.pem. This file is generated by the unbound-control-setup utility. This file is used by the unbound server, and also by unbound-control.
[control_key_file] (optional) Path to the control client private key, by default unbound_control.key. This file is generated by the unbound-control-setup utility. This file is used by unbound-control.
[control_cert_file] (optional) Path to the control client certificate, by default unbound_control.pem. This certificate has to be signed with the server certificate. This file is generated by the unbound-control-setup utility. This file is used by unbound-control.
[group] (optional) Name of the group for unbound files and directory
[confdir] (optional) Name of the directory where configuration files are stored
[config_file] (optional) Name of the unbound config file
Parameters
The following parameters are available in the unbound::remote
class:
enable
interface
port
control_use_cert
server_key_file
server_cert_file
control_key_file
control_cert_file
group
confdir
config_file
control_setup_path
enable
Data type: Boolean
Default value: $unbound::control_enable
interface
Data type: Array
Default value: ['::1', '127.0.0.1']
port
Data type: Integer
Default value: 8953
control_use_cert
Data type: Boolean
Default value: true
server_key_file
Data type: String
Default value: "${unbound::confdir}/unbound_server.key"
server_cert_file
Data type: String
Default value: "${unbound::confdir}/unbound_server.pem"
control_key_file
Data type: String
Default value: "${$unbound::confdir}/unbound_control.key"
control_cert_file
Data type: String
Default value: "${$unbound::confdir}/unbound_control.pem"
group
Data type: Any
Default value: $unbound::group
confdir
Data type: Any
Default value: $unbound::confdir
config_file
Data type: Any
Default value: $unbound::config_file
control_setup_path
Data type: Any
Default value: $unbound::control_setup_path
Defined types
unbound::forward
Class: unbound::forward
Configures a zone for DNS forwarding
== Parameters:
[zone] (required) the name of the zone.
[address] IP address of server to forward queries to. Can be IP 4 or IP 6 (and an array or a single value. To use a nondefault port for DNS communication append '@' with the port number.
[host] Hostname of server to forward queries to. Can be IP 4 or IP 6 (and an array or a single value. To use a nondefault port for DNS communication append '@' with the port number.
[forward_first] (optional) If enabled, a query is attempted without the forward clause if it fails. The data could not be retrieved and would have caused SERVFAIL because the servers are unreachable, instead it is tried without this clause. The default is 'no'.
[forward_ssl_upstream] (optional) If enabled, unbound will query the forward DNS server via TLS.
[config_file] (optional) name of configuration file
Parameters
The following parameters are available in the unbound::forward
defined type:
address
Data type: Array
Default value: []
host
Data type: Array
Default value: []
zone
Data type: Any
Default value: $name
forward_first
Data type: Pattern[/yes|no/]
Default value: 'no'
forward_ssl_upstream
Data type: Pattern[/yes|no/]
Default value: 'no'
forward_tls_upstream
Data type: Pattern[/yes|no/]
Default value: 'no'
config_file
Data type: Any
Default value: $unbound::config_file
unbound::localzone
Class: unbound::localzone
Configures a local zone. The default zones are localhost, reverse 127.0.0.1 and ::1, and the AS112 zones. The AS112 zones are reverse DNS zones for private use and reserved IP addresses for which the servers on the internet cannot pro- vide correct answers.
=== Parameters:
[zone] (required) String. Zone name.
[type] (required) Custom type Unbound::Local_zone_type.
[config_file] (optional) name of configuration file.
[local_data] (optional) Array. Define local data which should be rendered into configuration file. Required value is an Array of the custom type Unbond::Resource_record_type. Default value: []. Example: unbound::localzone::local_data:
- name: 'api.test.com'
ttl: 15
class: IN
type: A
data: '1.1.1.1'
- name: 'backend.test.com'
type: A
data: '2.2.2.2'
[template_name] (optional) String. Use a custom template. Default value: 'unbound/local_zone.erb'.
Parameters
The following parameters are available in the unbound::localzone
defined type:
type
Data type: Unbound::Local_zone_type
zone
Data type: String
Default value: $name
config_file
Data type: Any
Default value: $unbound::config_file
local_data
Data type: Array[Unbound::Resource_record_type]
Default value: []
template_name
Data type: String
Default value: 'unbound/local_zone.erb'
unbound::record
Class: unbound::record
Create an unbound static DNS record override
== Parameters:
[content] (required) The name of the record (ip address)
[ttl] (optional) The time to live for this record, defaults to '14400'
[type] (optional) Type or the record
[reverse] (optional) Reverse record or not, defaults to false
[entry] (optional) Name entry for the record (name)
[config_file] (optional) name of configuration file
Parameters
The following parameters are available in the unbound::record
defined type:
content
Data type: Variant[Array[String[1]], String[1]]
ttl
Data type: Any
Default value: '14400'
type
Data type: Any
Default value: 'A'
reverse
Data type: Any
Default value: false
entry
Data type: Any
Default value: $name
config_file
Data type: Any
Default value: $unbound::config_file
unbound::stub
Class: unbound::stub
Create an unbound stub zone for caching upstream name resolvers
=== Parameters:
[address] (required) IP address of server to forward to. Can be IP 4 or IP 6 (and an array or a single value. To use a nondefault port for DNS communication append '@' with the port number.
[nameservers] (optional) Name of stub zone nameserver. Is itself resolved before it is used.
[insecure] (optional) Defaults to false. Sets domain name to be insecure, DNSSEC chain of trust is ignored towards the domain name. So a trust anchor above the domain name can not make the domain secure with a DS record, such a DS record is then ignored. Also keys from DLV are ignored for the domain. Can be given multiple times to specify multiple domains that are treated as if unsigned. If you set trust anchors for the domain they override this setting (and the domain is secured). This can be useful if you want to make sure a trust anchor for external lookups does not affect an (unsigned) internal domain. A DS record externally can create validation failures for that internal domain.
[stub_first] (optional) Defaults to false. Controls 'stub-first' stub zone option. If true, a query that fails with the stub clause is attempted again without the stub clause.
[type] (optional) Defaults to 'transparent', can be 'deny', 'refuse', 'static', 'transparent', 'typetransparent', 'redirect' or 'nodefault'.
[config_file] (optional) Name of the unbound config file
Parameters
The following parameters are available in the unbound::stub
defined type:
address
Data type: Variant[Array[Unbound::Address], Unbound::Address]
nameservers
Data type: Array[Stdlib::Host]
Default value: []
insecure
Data type: Variant[Boolean, Enum['true', 'false']]
Default value: false
no_cache
Data type: Variant[Boolean, Enum['true', 'false']]
Default value: false
stub_first
Data type: Variant[Boolean, Enum['true', 'false']]
Default value: false
type
Data type: Unbound::Local_zone_type
Default value: 'transparent'
config_file
Data type: Optional[Stdlib::Unixpath]
Default value: undef
Data types
Unbound::Access_control
The Unbound::Access_control data type.
Alias of
Struct[{
action => Optional[Enum['deny', 'refuse', 'allow', 'allow_snoop', 'deny_non_local', 'refuse_non_local']],
tags => Optional[Array[String]],
rr_string => Optional[String],
view => Optional[String],
}]
Unbound::Address
Patterns copied from Stdlib::IP
Alias of
Variant[Stdlib::IP::Address::Nosubnet, Pattern[
/\A([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}@\d{1,5}\z/,
/\A[[:xdigit:]]{1,4}(:[[:xdigit:]]{1,4}){7}(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?@\d{1,5}\z/,
/\A([[:xdigit:]]{1,4}:){6}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?@\d{1,5}\z/,
/\A([[:xdigit:]]{1,4}:){5}:([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?@\d{1,5}\z/,
/\A([[:xdigit:]]{1,4}:){4}(:[[:xdigit:]]{1,4}){0,1}:([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?@\d{1,5}\z/,
/\A([[:xdigit:]]{1,4}:){3}(:[[:xdigit:]]{1,4}){0,2}:([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?@\d{1,5}\z/,
/\A([[:xdigit:]]{1,4}:){2}(:[[:xdigit:]]{1,4}){0,3}:([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?@\d{1,5}\z/,
/\A([[:xdigit:]]{1,4}:){1}(:[[:xdigit:]]{1,4}){0,4}:([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?@\d{1,5}\z/,
/\A:(:[[:xdigit:]]{1,4}){0,5}:([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?@\d{1,5}\z/,
/\A:(:|(:[[:xdigit:]]{1,4}){1,7})(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?@\d{1,5}\z/,
/\A([[:xdigit:]]{1,4}:){1}(:|(:[[:xdigit:]]{1,4}){1,6})(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?@\d{1,5}\z/,
/\A([[:xdigit:]]{1,4}:){2}(:|(:[[:xdigit:]]{1,4}){1,5})(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?@\d{1,5}\z/,
/\A([[:xdigit:]]{1,4}:){3}(:|(:[[:xdigit:]]{1,4}){1,4})(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?@\d{1,5}\z/,
/\A([[:xdigit:]]{1,4}:){4}(:|(:[[:xdigit:]]{1,4}){1,3})(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?@\d{1,5}\z/,
/\A([[:xdigit:]]{1,4}:){5}(:|(:[[:xdigit:]]{1,4}){1,2})(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?@\d{1,5}\z/,
/\A([[:xdigit:]]{1,4}:){6}(:|(:[[:xdigit:]]{1,4}){1,1})(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?@\d{1,5}\z/,
/\A([[:xdigit:]]{1,4}:){7}:(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?@\d{1,5}\z/,
]]
Unbound::Chroot
The Unbound::Chroot data type.
Alias of Variant[Enum[''], Stdlib::Absolutepath]
Unbound::Hints_file
The Unbound::Hints_file data type.
Alias of Variant[Enum['builtin'], Stdlib::Absolutepath]
Unbound::Local_zone
custom enum type for local-zone types
Alias of Hash[String, Unbound::Local_zone_type]
Unbound::Local_zone_override
The Unbound::Local_zone_override data type.
Alias of
Struct[{
netblock => String,
type => Unbound::Local_zone_type
}]
Unbound::Local_zone_type
custom enum type for local-zone types
Alias of Enum['deny', 'refuse', 'static', 'transparent', 'redirect', 'nodefault', 'typetransparent', 'inform', 'inform_deny', 'always_transparent', 'always_refuse', 'always_nxdomain']
Unbound::Module
list of valid modules
Alias of Enum['validator', 'iterator', 'python', 'dns64', 'subnetcache', 'ipsecmod', 'cachedb', 'respip']
Unbound::Range
The Unbound::Range data type.
Alias of Pattern[/\d+(-\d+)?/]
Unbound::Resource_record_type
custom type for resource record used for local-data
Alias of
Struct[{
'name' => String,
'ttl' => Optional[Integer],
'class' => Optional[String],
'type' => String,
'data' => String,
}]
Unbound::Rpz
Type used to validate rzp configueration
Alias of
Struct[{
primary => Optional[Array[Stdlib::Host]],
master => Optional[Array[Stdlib::Host]],
url => Optional[Array[Stdlib::HTTPUrl]],
allow_notify => Optional[Array[Stdlib::Host]],
zonefile => Optional[Stdlib::Unixpath],
rpz_action_override => Optional[Unbound::Rpz::Action],
rpz_cname_override => Optional[Stdlib::Fqdn],
rpz_log => Optional[Boolean],
rpz_log_name => Optional[String],
tags => Optional[Array[String]],
}]
Parameters
The following parameters are available in the Unbound::Rpz
data type:
primary
master
url
allow_notify
zonefile
rpz_action_override
rpz_cname_override
rpz_log
rpz_log_name
tags
primary
the primary name server
master
another name for the primary name server
url
to download the rpz zone
allow_notify
list of hosts allowed to notify
zonefile
path to zonefile
rpz_action_override
Always use this RPZ action for matching triggers from this zone. Possible action are: nxdomain, nodata, passthru, drop, disabled and cname.
rpz_cname_override
The CNAME target domain to use if the cname action is configured for rpz-action-override.
rpz_log
Log all applied RPZ actions for this RPZ zone
rpz_log_name
Specify a string to be part of the log line, for easy referencing.
tags
Limit the policies from this RPZ clause to clients with a matching tag
Unbound::Rpz::Action
list of valid rpz actions
Alias of Enum['nxdomain', 'nodata', 'passthru', 'drop', 'disabled', 'cname']
Unbound::Size
The Unbound::Size data type.
Alias of Pattern[/\d+([kmg])?/]
Changelog
All notable changes to this project will be documented in this file. Each new release typically also includes the latest modulesync defaults. These should not affect the functionality of the module.
v7.0.0 (2024-02-09)
Breaking changes:
- Drop Debian 10 support #335 (bastelfreak)
- Drop EoL Ubuntu 18.04 support #334 (bastelfreak)
- Drop EL7 support #333 (bastelfreak)
- Drop Puppet 6 support #312 (bastelfreak)
Implemented enhancements:
- Add AlmaLinux/Rocky support #331 (bastelfreak)
- Add Debian 12 #329 (bastelfreak)
- Add Ubuntu 22.04 support #328 (bastelfreak)
- stub: add support for stub-first stub zone option #322 (irregulator)
- Add Puppet 8 support #317 (bastelfreak)
- Relax dependencies version requirements #315 (smortex)
Fixed bugs:
- Add systemd timer to update root.hints file #332 (bastelfreak)
v6.0.0 (2022-09-25)
Breaking changes:
Implemented enhancements:
- Introduce unbound_version parameter #307 (bastelfreak)
Fixed bugs:
- unbound.conf: purge trailing whitespace #306 (bastelfreak)
Closed issues:
- unbound_version not set on first run causing unexpected config file setting #286
v5.1.1 (2022-07-14)
Fixed bugs:
- metadata.json: Fix source URL #304 (bastelfreak)
v5.1.0 (2022-06-28)
Implemented enhancements:
- 296: Add support for multiple contents/records in unbound::record #300 (b4ldr)
- (297) Add support for stub nameservers and fix docs #298 (b4ldr)
- (#250) Add RPZ support #259 (b4ldr)
Fixed bugs:
Closed issues:
- Documentation is misleading when using unbound::stub #297
- No support Static record mapping to multiple IP #296
- Please support 'respip' in module_config #250
Merged pull requests:
- 'target-fetch-policy' is supposed to be a single string #289 (rumpelst1lzk1n)
v5.0.0 (2022-02-01)
Breaking changes:
Implemented enhancements:
- Make service manageable #285 (and0x000)
- Add support for FreeBSD 13 #284 (smortex)
- Add support for Debian 11 #281 (smortex)
Fixed bugs:
- fix typo in template: includes? -> include? / make access_control parameter useable #293 (bastelfreak)
Merged pull requests:
- Add unit tests for access_control datatype #292 (bastelfreak)
v4.0.1 (2021-08-26)
Fixed bugs:
- $tls_upstreami -> $tls_upstream typo #276 (steadramon)
- Adjustment for DNS Flag Day 2020 #275 (steadramon)
Merged pull requests:
v4.0.0 (2021-04-27)
Breaking changes:
- Drop EoL Ubuntu 16.04 support #273 (bastelfreak)
- puppet5: drop puppet 5 support #266 (b4ldr)
- Drop RedHat 6 (and derivatives) support #256 (b4ldr)
Fixed bugs:
- Resource default statements in module #242
Merged pull requests:
- puppetlabs/concat: Allow 7.x #268 (bastelfreak)
- puppetlabs/stdlib: Allow 7.x #267 (bastelfreak)
- move defaults to class so that puppet-strings can build better docs #265 (b4ldr)
- Refactor #264 (b4ldr)
- Provide root-hints variables & overrides for different scenarios #263 (jared-gs)
- Unbound 1.9.0 #262 (steadramon)
- 242: use collections to add additional parameters #260 (b4ldr)
- Fix spec test #254 (b4ldr)
v3.0.0 (2020-09-30)
Breaking changes:
- Drop Debian 6/7/8 support and compatibility #246 (bastelfreak)
Implemented enhancements:
Fixed bugs:
- Fix erb template to allow string for address attribute #247 (bastelfreak)
Merged pull requests:
- Disable Debian 8 acceptance tests #248 (bastelfreak)
v2.8.0 (2020-09-25)
Debian 8 is EOL since some time now. This 2.8.0 release will be the last one with Debian 8 support. The next release will be 3.0.0 without Debian 8!
Implemented enhancements:
- Implement Archlinux support #243 (bastelfreak)
Fixed bugs:
- Single quote TXT records and break them into strings of 255 characters #238 (FredericLespez)
Closed issues:
- Handle TXT records containing double quotes and white space #237
Merged pull requests:
- Resolve puppet-lint notices #240 (jcpunk)
- modulesync 3.0.0 & puppet-lint updates #239 (bastelfreak)
- Restart for interface change after service is configured #236 (nward)
- Fix several markdown lint issues #235 (dhoppe)
v2.7.0 (2020-04-21)
Implemented enhancements:
Merged pull requests:
v2.6.0 (2020-02-12)
Implemented enhancements:
- Purge unmanaged configuration files #225 (findmyname666)
Closed issues:
- Fix installation on Debian distribution - e.g. unbound option auto-trust-anchor-file is provided two times #223
- commit 5868593634371290ad013e4a3005f25cb8d7e1fe broke the module for me #221
- add ability to define/generate local-data + override local-zone template #215
unbound_version
fact needs a test #207- unbound-checkconf fails on first-time configuration (pid dir is missing) #188
- fatal error: auto-trust-anchor-file: "/var/lib/unbound/root.key" does not exist in chrootdir /etc/unbound #134
- Modifying forward config file location #129
- set permissions/ownership on configuration directories? #65
Merged pull requests:
- Update CHANGELOG.md, based on command bundle exec rake changelog #227 (dhoppe)
- ignore lint: quote boolean values have been [i belive] supported for … #226 (b4ldr)
- Add test for unbound::stub #222 (zachfi)
- validate_unbond_addr: replace functionality with a custom type #220 (b4ldr)
2.5.0 (2019-12-28)
Closed issues:
- Debian: module change ownership of directory /run to unbound #208
- version 2.4.3 breaks the configfile for tls-upstream on CentOS 7 #199
- Wrong quoting for local-data TXT records #196
- neg-cache-size is not specifiable #115
Merged pull requests:
- Add functionality to render local data and override local-zone template: #216 (findmyname666)
- update type typo #214 (dsoltero)
- update variable typos #213 (dsoltero)
- unbound_version: add spec tests to the unbound_version fact #212 (b4ldr)
- Fix facter regex #211 (zachfi)
- stop managing system directories like /run #210 (tequeter)
- Service #206 (zachfi)
- Fix neg-cache-size in unbound.conf #205 (cohoe)
- Add service control and package ensure parameters #204 (cohoe)
- Fix typo #203 (cure)
- beaker: fix beaker #201 (b4ldr)
- Issue 199: add version checking for ssl/tls parameters #200 (b4ldr)
- Set harden-referral-path to false by default. #198 (jensalmer)
2.4.3 (2019-04-22)
Merged pull requests:
- Update from xaque208 modulesync_config #195 (zachfi)
- Support TLS #193 (zachfi)
- Update from xaque208 modulesync_config #191 (zachfi)
2.4.2 (2019-03-04)
2.4.1 (2019-03-04)
Merged pull requests:
2.4.0 (2018-12-22)
Closed issues:
- Add SmartOS support #184
- Binding to 0.0.0.0 is a bad practice #183
- pid dir permissions could cause problems #180
- Unable to call unbound::local_zone class anymore #177
- interface changes don't take affect #166
- Add support for python-scipt #140
- Should add support for ssl-upstream config option #138
Merged pull requests:
- Add SmartOS support #184 #187 (joelgarboden)
- Fix module-config #186 (silkeh)
- Change default interface value #185 (zachfi)
- Restore unbound::local_zone function #182 (jlutran)
- Change default values for harden_short_bufsize & harden_large_queries #181 (jlutran)
- add module_config #176 (b4ldr)
2.3.2 (2018-06-03)
Merged pull requests:
- Update from xaque208 modulesync_config #178 (zachfi)
- add method to restart unbound on interface change #170 (b4ldr)
2.3.1 (2018-05-31)
Merged pull requests:
2.3.0 (2018-05-31)
Merged pull requests:
2.2.0-ICANN1 (2018-05-30)
Closed issues:
2.2.0 (2018-05-21)
Merged pull requests:
- Fix regressions #169 (fklajn)
- Set unbound pidfile for 6.3 #167 (zachfi)
- Update from xaque208 modulesync_config #165 (zachfi)
- Include .sync.yml for lost beaker tests #164 (zachfi)
- Update from xaque208 modulesync_config #163 (zachfi)
- Allow to set parameter forward-ssl-upstream for forward zones in #161 (buzzdeee)
- Update to hiera v5 #160 (jlutran)
- Allow forward-host option #159 (zachfi)
- acceptance testing #158 (b4ldr)
2.1.0 (2018-02-26)
Closed issues:
- Add option to allow unbound to log to file instead of syslog #146
- Options not found #145
- Should support the unbound port on FreeBSD #126
- New features are not documented #37
Merged pull requests:
- 138 tls options #156 (b4ldr)
- add log options #155 (b4ldr)
- add local_zone and domain_insecure parameters #153 (b4ldr)
- Added option to allow unbound to log to file instead of syslog #147 (enemarke)
- modulesync 2017-05-03 #139 (zachfi)
- Add test for the interface selection #137 (zachfi)
- Validation requires the anchor file is present #136 (zachfi)
2.0.0 (2016-10-28)
Closed issues:
- Should handle local unbound on FreeBSD with more grace #125
Merged pull requests:
1.3.6 (2016-07-12)
Closed issues:
- invalid parameter target #128
Merged pull requests:
- Remove dependency cycle when skip_roothints_download is true #131 (drt24)
- Set hints permissions after download #130 (claytono)
- White space fix for puppet-lint #127 (mld)
- Add ability to set cache settings as parameters #124 (jaxxstorm)
1.3.5 (2016-06-06)
Closed issues:
- harden-dnssec-stripped parameter is not controlled #108
Merged pull requests:
- Fix template variable reference #123 (zachfi)
- booleans: allow to actually toggle the booleans #122 (igalic)
1.3.4 (2016-04-14)
Merged pull requests:
1.3.3 (2016-04-09)
Merged pull requests:
- Default behavior for unbound::remote isn't well documented #120 (cPanelScott)
1.3.2 (2016-04-04)
Merged pull requests:
1.3.1 (2016-04-01)
Merged pull requests:
1.3.0 (2016-04-01)
Closed issues:
- hiera example is not documented #110
Merged pull requests:
1.2.2 (2016-02-22)
Closed issues:
- unable to load puppet_x/unbound/validate_addrs (on puppetserver) #105
Merged pull requests:
- Convert config_file to a definition parameter #114 (sbadia)
- Added missing option in the configuration: so_sndbuf #113 (marknl)
- using https to download named.root #112 (mmckinst)
- Add hiera support for define resources #111 (Rocco83)
- Allow to pass action with $access #109 (sileht)
1.2.1 (2015-12-19)
Closed issues:
Merged pull requests:
- Use the relative path for loading puppet_x #107 (zachfi)
- Add feature skip_roothints_download #106 (mrdima)
1.2.0 (2015-07-29)
Merged pull requests:
- Begin replacing unbound::stub address validation #104 (zachfi)
- Exec calls should have a full path. #72 (robbat2)
1.1.8 (2015-07-28)
Closed issues:
- Wrong unbound-checkconf path for Centos and Scientific 6 #99
Merged pull requests:
1.1.7 (2015-07-22)
Merged pull requests:
- Set correct checkconf on EL platforms #100 (zachfi)
- Multiple addressess/hosts for stub zones #98 (rswarts)
- Freebsd 10 #97 (b4ldr)
- Change scope of params #96 (b4ldr)
1.1.6-ICANN-3 (2015-07-03)
1.1.6-ICANN-2 (2015-07-03)
1.1.6-ICANN (2015-07-03)
Closed issues:
- We should manage the permissions of /var/unbound/etc so that the root.key can be written by the unbound user. #32
1.1.6 (2015-06-29)
Closed issues:
- Concat 2.x deletion #92
- Missing support for hide_identity/hide_version #90
- Default interfaces on multi-homed servers #12
Merged pull requests:
- stub: local-zones have multiple types; allow type to be overwritten #94 (kmullin)
- Bring back hide_version and hide_identity #93 (kmullin)
- default port 8953 for remote-control #91 (ghost)
- add forward-first option for forward zones. #87 (ryanfolsom)
1.1.5 (2015-06-03)
1.1.4 (2015-05-29)
Closed issues:
Merged pull requests:
- Some light fixes after recent merge #89 (zachfi)
- stub-zone could be specified with either ip or hostname #88 (ghost)
- Pin repo versions to aim for determinism #85 (zachfi)
- restart unbound without starting and stoping the daemon #84 (f0)
- Fix broken commit #82 (zachfi)
- Use the master branches status as build indicator #81 (zachfi)
- RedHat does not install wget by default, but curl is available #79 (robinbowes)
- Set correct runtime dir #78 (robinbowes)
- Make it work with strict variables #77 (robinbowes)
- Use str2bool so always-string data from hiera can still be used as if it... #75 (rswarts)
- Begin spec testing #74 (zachfi)
- Ensure local-zone is always under server. #71 (robbat2)
- Updates to trust anchoring #67 (b4ldr)
1.0.0-ICANN (2015-02-05)
Merged pull requests:
- create directory before exec #68 (f3rr)
- Run unbound-control-setup, in order to create the certificates #66 (buzzdeee)
- Add custom_server_conf configuration option #64 (cure)
- Some minor adjustments for OpenBSD 5.6 #63 (zachfi)
1.1.3 (2014-10-19)
1.1.2 (2014-10-18)
1.1.1 (2014-10-18)
Closed issues:
- Make a new puppetforge release? #55
Merged pull requests:
- Roll some blacksmith using the skeleton data #61 (zachfi)
- Clean up some newline issues #59 (zachfi)
- Fix syntax error in templates/forward.erb #57 (cure)
- add metadata.json (before new release) #56 (igalic)
- rebase of pull 44 #54 (b4ldr)
- make unbound module future parser compatible #53 (buzzdeee)
- Add support for OpenBSD 5.6 and future, #52 (buzzdeee)
- Update dependency to puppetlabs/concat in Readme.md #51 (buzzdeee)
- add hide_identity and hide_version parameters, and update the #50 (buzzdeee)
- OpenBSD has ftp and not fetch to retrieve files. #49 (buzzdeee)
1.1.0 (2014-08-27)
Merged pull requests:
- Update test files to pass lint #48 (zachfi)
- OS specific client to fetch root hints and edns buffer size option #45 (b4ldr)
- Add support for the prefetch-key option. #43 (daenney)
- Allow forwarding reverse DNS queries for the default local zones. #42 (dsolsona)
- Change concat module dependency. #41 (cure)
- Add control over tcp-upstream #39 (inkblot)
- Adding extra options for optimizing unbound #38 (dsolsona)
1.0.0 (2014-01-11)
Closed issues:
- extraneous comma in forward.pp #17
Merged pull requests:
- Add syntax highlighting for documentation #36 (igalic)
- unbound header is out of order with concat setup #35 (igalic)
- using "name" as parameter in types makes life difficult #34 (igalic)
- enable simple creation of reverse entries #33 (igalic)
- (maint) Add Travis CI testing #31 (zachfi)
- use correct owner variable #30 (mmoll)
- (maint) Change parameter names and cleanup #29 (zachfi)
0.0.5 (2013-12-13)
0.0.4 (2013-12-12)
Closed issues:
Merged pull requests:
- (maint) Add OpenBSD support #27 (zachfi)
- (maint) Mostly pass lint #26 (zachfi)
- Make sure unbound can read the root.hints file #25 (michakrause)
- fix typo in template #24 (mbakke)
- Add option to enable extended statistics #23 (bisscuitt)
- Adding change so make usage of ipv4 and ipv6 explicit if need be. Both ... #22 (jrodriguezjr)
- Adding change so make usage of ipv4 and ipv6 explicit. Both are enabled... #20 (jrodriguezjr)
- Removed call to concat::setup as concat module has made this private #19 (growse)
- Fix template variables by prefixing @ #18 (dkerwin)
- Add ability to specify port which unbound listens on #16 (growse)
- Fix typos in config file template for infra-host-ttl #13 (nicwaller)
- Added infra-host-ttl option #10 (rlex)
- Automatically install and configure DNS root hints #9 (nicwaller)
- Added notes about concat dependency #8 (nicwaller)
0.0.3 (2013-04-22)
Merged pull requests:
0.0.2 (2012-11-16)
0.0.1 (2012-03-25)
* This Changelog was automatically generated by github_changelog_generator
Dependencies
- puppetlabs/concat (>= 4.1.0 < 10.0.0)
- puppetlabs/stdlib (>= 4.25.0 < 10.0.0)
- puppet/systemd (>= 6.3.0 < 7.0.0)
Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS Copyright 2013 Puppet Labs 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.