Note that exim contains tracker-specific configuration
[mirror/dsa-puppet.git] / modules / rsync / manifests / site.pp
1 # an rsync site, systemd socket activated
2 define rsync::site (
3   Array[String] $binds = ['[::]'],
4   Optional[String] $source = undef,
5   Optional[String] $content = undef,
6   Integer $max_clients = 200,
7   Enum['present','absent'] $ensure = 'present',
8   Optional[String] $sslname = undef,
9 ) {
10   include rsync
11
12   $fname_real_rsync = "/etc/rsyncd-${name}.conf"
13   $fname_real_stunnel = "/etc/rsyncd-${name}-stunnel.conf"
14
15   file { $fname_real_rsync:
16     ensure  => $ensure,
17     content => $content,
18     source  => $source,
19   }
20
21   dsa_systemd::socket_service { "rsyncd-${name}":
22     ensure          => $ensure,
23     service_content => template('rsync/systemd-rsyncd.service.erb'),
24     socket_content  => template('rsync/systemd-rsyncd.socket.erb'),
25     require         => File[$fname_real_rsync],
26   }
27
28   if $sslname {
29     file { $fname_real_stunnel:
30       ensure  => $ensure,
31       content => template('rsync/systemd-rsyncd-stunnel.conf.erb'),
32       require => File["/etc/ssl/debian/certs/${sslname}.crt-chained"],
33     }
34
35     dsa_systemd::socket_service { "rsyncd-${name}-stunnel":
36       ensure          => $ensure,
37       service_content => template('rsync/systemd-rsyncd-stunnel.service.erb'),
38       socket_content  => template('rsync/systemd-rsyncd-stunnel.socket.erb'),
39       require         => File[$fname_real_stunnel],
40     }
41
42     ferm::rule { "rsync-${name}-ssl":
43       domain      => '(ip ip6)',
44       description => 'Allow rsync access',
45       rule        => '&SERVICE(tcp, 1873)',
46     }
47
48     $certdir = hiera('paths.letsencrypt_dir')
49     dnsextras::tlsa_record{ "tlsa-${sslname}-1873":
50       zone     => 'debian.org',
51       certfile => [ "${certdir}/${sslname}.crt" ],
52       port     => 1873,
53       hostname => $sslname,
54     }
55   }
56 }