Try to avoid reserved site keyword
[mirror/dsa-puppet.git] / modules / unbound / manifests / init.pp
index 5261009..840cfff 100644 (file)
@@ -7,10 +7,13 @@
 #   include unbound
 #
 class unbound {
+       include stdlib
 
-       $is_recursor   = getfromhash($site::nodeinfo, 'misc', 'resolver-recursive')
-       $client_ranges = getfromhash($site::nodeinfo, 'hoster', 'allow_dns_query')
-       $ns            = hiera('nameservers')
+       $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
@@ -22,6 +25,11 @@ class unbound {
                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,
@@ -35,7 +43,8 @@ class 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,
@@ -43,7 +52,17 @@ class unbound {
                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'),
@@ -55,16 +74,16 @@ class unbound {
                notify  => Service['unbound']
        }
 
-       if ($is_recursor and $client_ranges) {
-               @ferm::rule { 'dsa-dns':
+       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(getfromhash($site::nodeinfo, 'hoster', 'allow_dns_query')))),
+                       rule        => sprintf('&TCP_UDP_SERVICE_RANGE(53, (%s))', join_spc(filter_ipv4($client_ranges))),
                }
-               @ferm::rule { 'dsa-dns6':
+               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')))),
+                       rule        => sprintf('&TCP_UDP_SERVICE_RANGE(53, (%s))', join_spc(filter_ipv6($client_ranges))),
                }
        }
 }