]> WPIA git - infra.git/blob - environments/production/manifests/gigi.pp
80bb50a5e50e9457760361838b718be64741dae6
[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   }
40   file { '/var/lib/wpia-gigi/config':
41     ensure => 'directory'
42   }
43   file {'/var/lib/wpia-gigi/config/gigi.properties':
44     ensure => 'file',
45     content => epp('gigi/gigi.properties')
46   }
47   file {'/var/lib/wpia-gigi/config/ca':
48     ensure => 'directory',
49     source => 'puppet:///modules/nre/config/ca',
50     recurse => true,
51     purge => true,
52     notify => Exec['keytool for /var/lib/wpia-gigi/config/cacerts.jks']
53   }
54   file {'/var/lib/wpia-gigi/config/profiles':
55     ensure => 'directory',
56     source => 'puppet:///modules/nre/config/profiles',
57     recurse => true,
58     purge => true,
59   }
60   exec {'keytool for /var/lib/wpia-gigi/config/cacerts.jks':
61     cwd => '/var/lib/wpia-gigi/config/ca',
62     refreshonly => true,
63     require => Package[$gigi_pkg],
64     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',
65   }
66   file {'/var/lib/wpia-gigi/config/truststorepw':
67     ensure => 'file',
68     content => 'changeit',
69   }
70   file {['/etc/wpia','/etc/wpia/gigi']:
71     ensure => 'directory'
72   }
73   file {'/var/lib/wpia-gigi/config/keystore.pkcs12':
74     source => ['puppet:///modules/gigi/keystore.pkcs12', 'puppet:///modules/gigi/empty'],
75     notify => Exec['tar for gigi-conf']
76   }->
77   file {'/var/lib/wpia-gigi/config/keystorepw':
78     source => ['puppet:///modules/gigi/keystorepw', 'puppet:///modules/gigi/empty'],
79     show_diff => 'no',
80     notify => Exec['tar for gigi-conf']
81   }
82   exec{'tar for gigi-conf':
83     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',
84     provider => 'shell',
85     path => '',
86     cwd => '/var/lib/wpia-gigi/config',
87     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 ]',
88     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']],
89     require => File['/etc/wpia/gigi']
90   }
91   file {'/var/lib/wpia-gigi/keys/crt':
92     ensure => 'directory',
93     owner => 'gigi',
94     require => Package[$gigi_pkg]
95   }
96   file {'/var/lib/wpia-gigi/keys/csr':
97     ensure => 'directory',
98     owner => 'gigi',
99     require => Package[$gigi_pkg]
100   }
101   exec {'/gigi-ready':
102     creates => '/gigi-ready',
103     command =>'/bin/false',
104     require => Exec['tar for gigi-conf']
105   }
106   exec{'alexa':
107     command => '/usr/bin/gigi fetch-alexa /var/lib/wpia-gigi/blacklist.dat 100',
108     creates => '/var/lib/wpia-gigi/blacklist.dat',
109     require => [File['/var/lib/wpia-gigi'],Package[$gigi_pkg]]
110   } -> service{'gigi-proxy.socket':
111     ensure => 'running',
112     enable => true,
113     provider => 'systemd',
114     subscribe => [Exec['tar for gigi-conf'],File['/var/lib/wpia-gigi/config/profiles']],
115     require => [Package[$gigi_pkg], File['/var/lib/wpia-gigi/keys/crt'], File['/var/lib/wpia-gigi/keys/csr'], Exec['/gigi-ready']]
116   }
117   package{'wpia-cassiopeia':
118     ensure => 'installed',
119     require => Exec['apt_update']
120   }
121 if $signerLocation == 'self' {
122   package { 'tcpserial':
123     ensure => 'installed',
124     require => Exec['apt_update']
125   }
126   $cass_ip = $ips[cassiopeia]
127   systemd::unit_file {'tcpserial.service':
128     ensure => 'file',
129     content => epp('gigi/tcpserial'),
130     require => Package['tcpserial']
131   }->
132   service{'tcpserial.service':
133     ensure => 'running',
134     enable => true,
135     provider => 'systemd',
136     before => Service['cassiopeia-client.service']
137   }
138 } elsif  $signerLocation == '/dev/ttyS0' {
139   exec {'/bin/mknod /dev/ttyS0 c 4 64':
140     creates => "/dev/ttyS0",
141     before => Service['cassiopeia-client.service']
142   }
143 }
144
145   file {'/var/lib/cassiopeia/':
146     ensure => 'directory',
147     require => Package['wpia-cassiopeia']
148   }
149   file {'/var/lib/cassiopeia/config.txt':
150     ensure => 'file',
151     content => epp('gigi/cassiopeia-client-conf')
152   }
153
154   file {'/var/lib/cassiopeia/logs':
155     ensure => 'directory',
156   }
157
158   file {'/var/lib/cassiopeia/profiles':
159     ensure => 'directory',
160     source => 'puppet:///modules/cassiopeia_client/profiles',
161     recurse => true,
162     purge => true
163   }
164   file {'/var/lib/cassiopeia/ca':
165     ensure => 'directory',
166     source => 'puppet:///modules/cassiopeia_client/ca',
167     recurse => true,
168   }
169
170   file {'/var/lib/cassiopeia/keys':
171     ensure => 'directory',
172     require => File['/var/lib/cassiopeia/']
173   }
174   file {'/var/lib/cassiopeia/keys/ca.crt':
175     ensure => 'file',
176     source => 'puppet:///modules/cassiopeia/ca.crt'
177   }
178   file {'/var/lib/cassiopeia/keys/signer_client.crt':
179     ensure => 'file',
180     source => 'puppet:///modules/cassiopeia/signer_client.crt'
181   }
182   file {'/var/lib/cassiopeia/keys/signer_client.key':
183     ensure => 'file',
184     source => 'puppet:///modules/cassiopeia/signer_client.key'
185   }
186
187   systemd::unit_file { 'cassiopeia-client.service':
188     source => 'puppet:///modules/gigi/cassiopeia-client.service',
189     ensure => 'present'
190   } ->
191   service{'cassiopeia-client.service':
192     provider => 'systemd',
193     require => [File['/var/lib/cassiopeia/config.txt'],
194             File['/var/lib/cassiopeia/ca'],
195             File['/var/lib/cassiopeia/logs'],
196             File['/var/lib/cassiopeia/profiles'],
197             File['/var/lib/cassiopeia/keys/ca.crt'],
198             File['/var/lib/cassiopeia/keys/signer_client.crt'],
199             File['/var/lib/cassiopeia/keys/signer_client.key'],
200             Exec['/gigi-ready']],
201     ensure => 'running',
202     enable => true,
203   }
204
205 }