]> WPIA git - infra.git/blob - environments/production/manifests/gigi.pp
add: ocsp server configuration
[infra.git] / environments / production / manifests / gigi.pp
1 node gigi {
2   include container::contained;
3   include container::no_ssh;
4
5   file { "${::puppet_vardir}/debconf/":
6      ensure => 'directory'
7   }
8   $gigi_pkg = $testServer ? {
9     'true' => 'wpia-gigi-testing',
10     default => 'wpia-gigi'
11   }
12   file { "${::puppet_vardir}/debconf/gigi-lang.debconf":
13      ensure => 'present',
14      content => "$gigi_pkg     $gigi_pkg/fetch-locales-command       string  gigi fetch-locales $gigi_translation"
15   } ->
16   exec { 'debconf-gigi':
17     path => "/usr/bin",
18     command => "/usr/bin/debconf-set-selections < ${::puppet_vardir}/debconf/gigi-lang.debconf",
19     unless => "/usr/bin/debconf-get-selections | /bin/grep -F '$gigi_translation' | /bin/grep -F '$gigi_pkg/fetch-locales'"
20   }
21
22   apt_key{ 'E643C483A426BB5311D26520A631B6AF9FD3DF94':
23     source => 'http://deb.dogcraft.de/signer.gpg',
24     ensure => 'present'
25   } ->
26   file { '/etc/apt/sources.list.d/dogcraft.list':
27     source => 'puppet:///modules/lxc/dogcraft.list',
28     ensure => 'present',
29     notify => Exec['apt_update']
30   }
31   package { $gigi_pkg:
32     require => [Exec['debconf-gigi'],Exec['apt_update']],
33     ensure => 'installed',
34   }
35   $gigi_pg_ip = $ips[postgres];
36   $gigi_pg_password = $passwords[postgres][gigi];
37   file { '/var/lib/wpia-gigi':
38     ensure => 'directory',
39     require => Package[$gigi_pkg]
40   }
41   file {'/var/lib/wpia-gigi/ocsp':
42     ensure => 'link',
43     target => '/var/lib/cassiopeia/ca',
44     before => Exec['/gigi-ready'],
45   }
46   file {'/var/lib/wpia-gigi/ocsp.pkcs12':
47     ensure => 'file',
48     owner => 'gigi',
49     before => Exec['/gigi-ready'],
50   }
51   file { '/var/lib/wpia-gigi/config':
52     ensure => 'directory'
53   }
54   file {'/var/lib/wpia-gigi/config/gigi.properties':
55     ensure => 'file',
56     content => epp('gigi/gigi.properties')
57   }
58   file {'/var/lib/wpia-gigi/config/ca':
59     ensure => 'directory',
60     source => 'puppet:///modules/nre/config/ca',
61     recurse => true,
62     purge => true,
63     notify => Exec['keytool for /var/lib/wpia-gigi/config/cacerts.jks']
64   }
65   file {'/var/lib/wpia-gigi/config/profiles':
66     ensure => 'directory',
67     source => 'puppet:///modules/nre/config/profiles',
68     recurse => true,
69     purge => true,
70   }
71   exec {'keytool for /var/lib/wpia-gigi/config/cacerts.jks':
72     cwd => '/var/lib/wpia-gigi/config/ca',
73     refreshonly => true,
74     require => Package[$gigi_pkg],
75     command => '/bin/rm -f ../cacerts.jks && /usr/bin/keytool -importcert -keystore ../cacerts.jks -noprompt -storepass changeit -file root.crt -alias root && for i in assured.crt codesign.crt env.crt orga.crt orgaSign.crt unassured.crt *_*.crt; do /usr/bin/keytool -importcert -keystore ../cacerts.jks -storepass changeit -file "$i" -alias "${i%.crt}"; done',
76   }
77   file {'/var/lib/wpia-gigi/config/truststorepw':
78     ensure => 'file',
79     content => 'changeit',
80   }
81   file {['/etc/wpia','/etc/wpia/gigi']:
82     ensure => 'directory'
83   }
84   file {'/var/lib/wpia-gigi/config/keystore.pkcs12':
85     source => ['puppet:///modules/gigi/keystore.pkcs12', 'puppet:///modules/gigi/empty'],
86     notify => Exec['tar for gigi-conf']
87   }->
88   file {'/var/lib/wpia-gigi/config/keystorepw':
89     source => ['puppet:///modules/gigi/keystorepw', 'puppet:///modules/gigi/empty'],
90     show_diff => 'no',
91     notify => Exec['tar for gigi-conf']
92   }
93   exec{'tar for gigi-conf':
94     command => 'if /usr/bin/[ -s /var/lib/wpia-gigi/config/keystore.pkcs12 ]; then /bin/tar cf /etc/wpia/gigi/conf.tar gigi.properties truststorepw cacerts.jks keystorepw keystore.pkcs12; else /bin/tar cf /etc/wpia/gigi/conf.tar gigi.properties truststorepw cacerts.jks; fi',
95     provider => 'shell',
96     path => '',
97     cwd => '/var/lib/wpia-gigi/config',
98     unless => '/usr/bin/[ /var/lib/wpia-gigi/keys/keystore.pkcs12 -ot /etc/wpia/gigi/conf.tar ] && /usr/bin/[ /var/lib/wpia-gigi/config/cacerts.jks -ot /etc/wpia/gigi/conf.tar ] && /usr/bin/[ /var/lib/wpia-gigi/config/gigi.properties -ot /etc/wpia/gigi/conf.tar ]',
99     subscribe => [File['/var/lib/wpia-gigi/config/truststorepw'],Exec['keytool for /var/lib/wpia-gigi/config/cacerts.jks'],File['/var/lib/wpia-gigi/config/gigi.properties']],
100     require => File['/etc/wpia/gigi']
101   }
102   file {'/var/lib/wpia-gigi/keys/crt':
103     ensure => 'directory',
104     owner => 'gigi',
105     require => Package[$gigi_pkg],
106     before => Exec['/gigi-ready'],
107   }
108   file {'/var/lib/wpia-gigi/keys/csr':
109     ensure => 'directory',
110     owner => 'gigi',
111     require => Package[$gigi_pkg],
112     before => Exec['/gigi-ready'],
113   }
114   exec {'/gigi-ready':
115     creates => '/gigi-ready',
116     command =>'/bin/false',
117     require => Exec['tar for gigi-conf']
118   }
119   exec{'alexa':
120     command => '/usr/bin/gigi fetch-alexa /var/lib/wpia-gigi/blacklist.dat 100',
121     creates => '/var/lib/wpia-gigi/blacklist.dat',
122     require => [File['/var/lib/wpia-gigi'],Package[$gigi_pkg]]
123   } -> service{'gigi-proxy.socket':
124     ensure => 'running',
125     enable => true,
126     provider => 'systemd',
127     subscribe => [Exec['tar for gigi-conf'],File['/var/lib/wpia-gigi/config/profiles']],
128     require => [Package[$gigi_pkg], File['/var/lib/wpia-gigi/keys/crt'], File['/var/lib/wpia-gigi/keys/csr'], Exec['/gigi-ready']]
129   }
130   package{'wpia-cassiopeia':
131     ensure => 'installed',
132     require => Exec['apt_update']
133   }
134 if $signerLocation == 'self' {
135   package { 'tcpserial':
136     ensure => 'installed',
137     require => Exec['apt_update']
138   }
139   $cass_ip = $ips[cassiopeia]
140   systemd::unit_file {'tcpserial.service':
141     ensure => 'file',
142     content => epp('gigi/tcpserial'),
143     require => Package['tcpserial']
144   }->
145   service{'tcpserial.service':
146     ensure => 'running',
147     enable => true,
148     provider => 'systemd',
149     before => Service['cassiopeia-client.service']
150   }
151 } elsif  $signerLocation == '/dev/ttyS0' {
152   exec {'/bin/mknod /dev/ttyS0 c 4 64':
153     creates => "/dev/ttyS0",
154     before => Service['cassiopeia-client.service']
155   }
156 }
157
158   file {'/var/lib/cassiopeia/':
159     ensure => 'directory',
160     require => Package['wpia-cassiopeia']
161   }
162   file {'/var/lib/cassiopeia/config.txt':
163     ensure => 'file',
164     content => epp('gigi/cassiopeia-client-conf')
165   }
166
167   file {'/var/lib/cassiopeia/logs':
168     ensure => 'directory',
169   }
170
171   file {'/var/lib/cassiopeia/profiles':
172     ensure => 'directory',
173     source => 'puppet:///modules/cassiopeia_client/profiles',
174     recurse => true,
175     purge => true
176   }
177   file {'/var/lib/cassiopeia/ca':
178     ensure => 'directory',
179     owner => 'gigi',
180     source => 'puppet:///modules/cassiopeia_client/ca',
181     recurse => true,
182   }
183
184   file {'/var/lib/cassiopeia/keys':
185     ensure => 'directory',
186     require => File['/var/lib/cassiopeia/']
187   }
188   file {'/var/lib/cassiopeia/keys/ca.crt':
189     ensure => 'file',
190     source => 'puppet:///modules/cassiopeia/ca.crt'
191   }
192   file {'/var/lib/cassiopeia/keys/signer_client.crt':
193     ensure => 'file',
194     source => 'puppet:///modules/cassiopeia/signer_client.crt'
195   }
196   file {'/var/lib/cassiopeia/keys/signer_client.key':
197     ensure => 'file',
198     source => 'puppet:///modules/cassiopeia/signer_client.key'
199   }
200
201   systemd::unit_file { 'cassiopeia-client.service':
202     source => 'puppet:///modules/gigi/cassiopeia-client.service',
203     ensure => 'present'
204   } ->
205   service{'cassiopeia-client.service':
206     provider => 'systemd',
207     require => [File['/var/lib/cassiopeia/config.txt'],
208             File['/var/lib/cassiopeia/ca'],
209             File['/var/lib/cassiopeia/logs'],
210             File['/var/lib/cassiopeia/profiles'],
211             File['/var/lib/cassiopeia/keys/ca.crt'],
212             File['/var/lib/cassiopeia/keys/signer_client.crt'],
213             File['/var/lib/cassiopeia/keys/signer_client.key'],
214             Exec['/gigi-ready']],
215     ensure => 'running',
216     enable => true,
217   }
218
219 }