+# = Class: unbound
+#
+# This class installs and configures unbound
+#
+# == Sample Usage:
+#
+# include unbound
+#
class unbound {
+ include stdlib
+
+ $is_recursor = getfromhash($deprecated::nodeinfo, 'misc', 'resolver-recursive')
+ $client_ranges = hiera('allow_dns_query')
+ $firewall_blocks_dns = hiera('firewall_blocks_dns', false)
+ $empty_client_range = empty($client_ranges)
+ $ns = hiera('resolv::nameservers')
package { 'unbound':
ensure => installed
pattern => 'unbound',
}
+ file { '/etc/init.d/unbound':
+ source => 'puppet:///modules/unbound/unbound.init',
+ mode => '0555',
+ notify => Exec['systemctl daemon-reload'],
+ }
file { '/var/lib/unbound':
ensure => directory,
owner => unbound,
owner => unbound,
group => unbound,
mode => '0644',
- source => 'puppet:///modules/unbound/root.key'
+ source => 'puppet:///modules/unbound/root.key',
+ notify => Service['unbound']
}
file { '/var/lib/unbound/debian.org.key':
ensure => present,
owner => unbound,
group => unbound,
mode => '0644',
- source => 'puppet:///modules/unbound/debian.org.key'
+ source => 'puppet:///modules/unbound/debian.org.key',
+ notify => Service['unbound']
+ }
+ file { '/var/lib/unbound/29.172.in-addr.arpa.key':
+ ensure => $firewall_blocks_dns ? { true => 'absent', default => 'present' },
+ replace => $firewall_blocks_dns ? { true => true, default => false },
+ owner => unbound,
+ group => unbound,
+ mode => '0644',
+ source => 'puppet:///modules/unbound/29.172.in-addr.arpa.key',
+ notify => Service['unbound']
}
file { '/etc/unbound/unbound.conf':
content => template('unbound/unbound.conf.erb'),
notify => Service['unbound']
}
- if getfromhash($site::nodeinfo, 'misc', 'resolver-recursive') {
- if getfromhash($site::nodeinfo, 'hoster', 'allow_dns_query') {
- @ferm::rule { 'dsa-dns':
- domain => 'ip',
- description => 'Allow nameserver access',
- rule => sprintf('&TCP_UDP_SERVICE_RANGE(53, (%s))', join_spc(filter_ipv4(getfromhash($site::nodeinfo, 'hoster', 'allow_dns_query')))),
- }
- @ferm::rule { 'dsa-dns6':
- domain => 'ip6',
- description => 'Allow nameserver access',
- rule => sprintf('&TCP_UDP_SERVICE_RANGE(53, (%s))', join_spc(filter_ipv6(getfromhash($site::nodeinfo, 'hoster', 'allow_dns_query')))),
- }
+ if ($is_recursor and !$empty_client_range) {
+ ferm::rule { 'dsa-dns':
+ domain => 'ip',
+ description => 'Allow nameserver access',
+ rule => sprintf('&TCP_UDP_SERVICE_RANGE(53, (%s))', join_spc(filter_ipv4($client_ranges))),
+ }
+ ferm::rule { 'dsa-dns6':
+ domain => 'ip6',
+ description => 'Allow nameserver access',
+ rule => sprintf('&TCP_UDP_SERVICE_RANGE(53, (%s))', join_spc(filter_ipv6($client_ranges))),
}
}
}