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