Merge remote-tracking branch 'gfa/gfa/prosody'
[mirror/dsa-puppet.git] / modules / roles / manifests / rtc.pp
1 # = Class: roles::rtc
2 #
3 # Setup for machines used by the RTC Team
4 #
5 # == Sample Usage:
6 #
7 #   include roles::rtc
8 #
9 class roles::rtc {
10
11   include profile::prosody
12
13   ssl::service { 'debian.org':
14     tlsaport => [],
15     notify   => Service['repro', 'prosody'],
16     key      => true,
17   }
18
19   ssl::service { 'sip-ws.debian.org':
20     notify => Service['repro'],
21     key    => true,
22   }
23
24   dnsextras::tlsa_record{ 'tlsa-xmpp':
25     zone     => 'debian.org',
26     certfile => '/etc/puppet/modules/ssl/files/servicecerts/www.debian.org.crt',
27     port     => [5061, 5222, 5269],
28     hostname => $::fqdn,
29   }
30
31   ferm::rule { 'dsa-xmpp-client-ip4':
32     domain      => 'ip',
33     description => 'XMPP connections (client to server)',
34     rule        => 'proto tcp dport (5222) ACCEPT'
35   }
36   ferm::rule { 'dsa-xmpp-client-ip6':
37     domain      => 'ip6',
38     description => 'XMPP connections (client to server)',
39     rule        => 'proto tcp dport (5222) ACCEPT'
40   }
41   ferm::rule { 'dsa-xmpp-server-ip4':
42     domain      => 'ip',
43     description => 'XMPP connections (server to server)',
44     rule        => 'proto tcp dport (5269) ACCEPT'
45   }
46   ferm::rule { 'dsa-xmpp-server-ip6':
47     domain      => 'ip6',
48     description => 'XMPP connections (server to server)',
49     rule        => 'proto tcp dport (5269) ACCEPT'
50   }
51
52   ferm::rule { 'dsa-sip-ws-ip4':
53     domain      => 'ip',
54     description => 'SIP connections (WebSocket; for WebRTC)',
55     rule        => 'proto tcp dport (443) ACCEPT'
56   }
57   ferm::rule { 'dsa-sip-ws-ip6':
58     domain      => 'ip6',
59     description => 'SIP connections (WebSocket; for WebRTC)',
60     rule        => 'proto tcp dport (443) ACCEPT'
61   }
62   ferm::rule { 'dsa-sip-tls-ip4':
63     domain      => 'ip',
64     description => 'SIP connections (TLS)',
65     rule        => 'proto tcp dport (5061) ACCEPT'
66   }
67   ferm::rule { 'dsa-sip-tls-ip6':
68     domain      => 'ip6',
69     description => 'SIP connections (TLS)',
70     rule        => 'proto tcp dport (5061) ACCEPT'
71   }
72   ferm::rule { 'dsa-turn-ip4':
73     domain      => 'ip',
74     description => 'TURN connections',
75     rule        => 'proto udp dport (3478) ACCEPT'
76   }
77   ferm::rule { 'dsa-turn-ip6':
78     domain      => 'ip6',
79     description => 'TURN connections',
80     rule        => 'proto udp dport (3478) ACCEPT'
81   }
82   ferm::rule { 'dsa-turn-tls-ip4':
83     domain      => 'ip',
84     description => 'TURN connections (TLS)',
85     rule        => 'proto tcp dport (5349) ACCEPT'
86   }
87   ferm::rule { 'dsa-turn-tls-ip6':
88     domain      => 'ip6',
89     description => 'TURN connections (TLS)',
90     rule        => 'proto tcp dport (5349) ACCEPT'
91   }
92   ferm::rule { 'dsa-rtp-ip4':
93     domain      => 'ip',
94     description => 'RTP streams',
95     rule        => 'proto udp dport (49152:65535) ACCEPT'
96   }
97   ferm::rule { 'dsa-rtp-ip6':
98     domain      => 'ip6',
99     description => 'RTP streams',
100     rule        => 'proto udp dport (49152:65535) ACCEPT'
101   }
102
103   file { '/etc/monit/monit.d/50rtc':
104     ensure  => absent,
105   }
106
107   service { 'repro':
108     ensure  => running,
109   }
110   dsa_systemd::override { 'repro':
111     content  => @("EOF"),
112                         [Unit]
113                         After=network-online.target
114                         | EOF
115   }
116
117   package { 'freeradius':
118     ensure => installed,
119   }
120   service { 'freeradius':
121     ensure => running,
122   }
123   $radius_password = hkdf('/etc/puppet/secret', "rtc-${::hostname}-radius-password")
124   file { '/etc/freeradius/3.0/sites-available/rtc.debian.org':
125     content => template('roles/rtc/freeradius-rtc.erb'),
126     mode    => '0440',
127     group   => freerad,
128   }
129   file { '/etc/freeradius/3.0/sites-enabled/rtc.debian.org':
130     ensure => link,
131     target => '../sites-available/rtc.debian.org',
132   }
133   file { '/etc/freeradius/3.0/mods-available/passwd_rtc':
134     source => 'puppet:///modules/roles/rtc/freeradius-mod-passwd-rtc',
135     mode   => '0440',
136     group  => freerad,
137   }
138   file { '/etc/freeradius/3.0/mods-enabled/passwd_rtc':
139     ensure => link,
140     target => '../mods-available/passwd_rtc',
141   }
142   file { '/etc/repro/radius-servers':
143     content => inline_template('localhost/localhost <%= @radius_password %>'),
144     mode    => '0440',
145     group   => repro,
146     notify  => Service['repro'],
147   }
148   file { '/etc/freeradius/3.0/sites-enabled/default':
149     ensure => absent,
150   }
151   file { '/etc/freeradius/3.0/sites-enabled/inner-tunnel':
152     ensure => absent,
153   }
154 }