X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=modules%2Funbound%2Fmanifests%2Finit.pp;h=840cfff9b091e08234dd02e5c582a3056c5a5ede;hb=a2afb600d7d2187b16da01c98a50f00f06aea6a6;hp=f01b7fd74a370a889c2cfacdbc7c5eecb3b4b001;hpb=24f6a09b9e6221b04321ca2d311c9c261415a0c9;p=mirror%2Fdsa-puppet.git diff --git a/modules/unbound/manifests/init.pp b/modules/unbound/manifests/init.pp index f01b7fd74..840cfff9b 100644 --- a/modules/unbound/manifests/init.pp +++ b/modules/unbound/manifests/init.pp @@ -1,68 +1,89 @@ +# = Class: unbound +# +# This class installs and configures unbound +# +# == Sample Usage: +# +# include unbound +# class unbound { - package { - unbound: ensure => installed; - } + include stdlib - exec { - "unbound restart": - path => "/etc/init.d:/usr/bin:/usr/sbin:/bin:/sbin", - refreshonly => true, - ; - } - file { - "/var/lib/unbound": - ensure => directory, - owner => unbound, - group => unbound, - require => Package["unbound"], - mode => 775, - ; - "/var/lib/unbound/root.key": - ensure => present, - replace => false, - owner => unbound, - group => unbound, - mode => 644, - source => [ "puppet:///modules/unbound/root.key" ], - ; - "/var/lib/unbound/debian.org.key": - ensure => present, - replace => false, - owner => unbound, - group => unbound, - mode => 644, - source => [ "puppet:///modules/unbound/debian.org.key" ], - ; - "/etc/unbound/unbound.conf": - content => template("unbound/unbound.conf.erb"), - require => [ Package["unbound"], File['/var/lib/unbound/root.key'], File['/var/lib/unbound/debian.org.key'] ], - notify => Exec["unbound restart"], - owner => root, - group => root, - ; - } + $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') - case getfromhash($nodeinfo, 'misc', 'resolver-recursive') { - true: { - case getfromhash($nodeinfo, 'hoster', 'allow_dns_query') { - false: {} - default: { - @ferm::rule { "dsa-dns": - domain => "ip", - description => "Allow nameserver access", - rule => sprintf("&TCP_UDP_SERVICE_RANGE(53, (%s))", join_spc(filter_ipv4(getfromhash($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($nodeinfo, 'hoster', 'allow_dns_query')))), - } - } - } - } - } -} + package { 'unbound': + ensure => installed + } + + service { 'unbound': + ensure => running, + hasstatus => false, + pattern => 'unbound', + } -# vim:set et: -# vim:set sts=4 ts=4: -# vim:set shiftwidth=4: + 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, + group => unbound, + require => Package['unbound'], + mode => '0775', + } + file { '/var/lib/unbound/root.key': + ensure => present, + replace => false, + owner => unbound, + group => unbound, + mode => '0644', + source => 'puppet:///modules/unbound/root.key', + notify => Service['unbound'] + } + file { '/var/lib/unbound/debian.org.key': + ensure => present, + replace => false, + owner => unbound, + group => unbound, + mode => '0644', + 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'), + require => [ + Package['unbound'], + File['/var/lib/unbound/root.key'], + File['/var/lib/unbound/debian.org.key'] + ], + notify => Service['unbound'] + } + + 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))), + } + } +}