Enable lingering for the contributors user
[mirror/dsa-puppet.git] / modules / roles / manifests / historical_mirror.pp
1 # a mirror for archive.debian.org
2 # @param sslname provide rsync via ssl as well
3 # @param listen_addr IP addresses to have apache listen on
4 class roles::historical_mirror(
5   Optional[String] $sslname = undef,
6   Array[Stdlib::IP::Address] $listen_addr = [],
7 ){
8   include roles::archvsync_base
9
10   include apache2
11   include apache2::expires
12
13   $enclosed_addresses_rsync = empty($listen_addr) ? {
14     true    => ['[::]'],
15     default => enclose_ipv6($listen_addr),
16   }
17   $_enclosed_addresses = empty($listen_addr) ? {
18     true    => ['*'],
19     default => enclose_ipv6($listen_addr),
20   }
21   $vhost_listen = $_enclosed_addresses.map |$a| { "${a}:80" } .join(' ')
22   $mirror_basedir_prefix = hiera('role_config__mirrors.mirror_basedir_prefix')
23   $archive_root = "${mirror_basedir_prefix}debian-archive"
24
25   apache2::site { '010-archive.debian.org':
26     site    => 'archive.debian.org',
27     content => template('roles/apache-archive.debian.org.erb'),
28   }
29
30   if $sslname {
31     ssl::service { $sslname:
32       key      => true,
33       tlsaport => [],
34     }
35   }
36   rsync::site { 'archive':
37     content     => template('roles/historical_mirror/rsyncd.conf.erb'),
38     max_clients => 100,
39     sslname     => $sslname,
40     binds       => $enclosed_addresses_rsync,
41   }
42
43   Ferm::Rule::Simple <<| tag == 'ssh::server::from::historical_master' |>>
44 }