]> WPIA git - infra.git/blob - environments/production/manifests/gigi.pp
add: real testing for testserver and real pro-version for real system
[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     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{'cacert-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   file {'/etc/systemd/system/tcpserial.service':
128     ensure => 'file',
129     content => epp('gigi/tcpserial'),
130     require => Package['tcpserial']
131   }->
132   service{'tcpserial.service':
133     ensure => 'running',
134     provider => 'systemd',
135     before => Service['cassiopeia-client.service']
136   }
137 } elsif  $signerLocation == '/dev/ttyS0' {
138   exec {'/bin/mknod /dev/ttyS0 c 4 64':
139     creates => "/dev/ttyS0",
140     before => Service['cassiopeia-client.service']
141   }
142 }
143
144   file {'/var/lib/cassiopeia/':
145     ensure => 'directory',
146     require => Package['cacert-cassiopeia']
147   }
148   file {'/var/lib/cassiopeia/config.txt':
149     ensure => 'file',
150     content => epp('gigi/cassiopeia-client-conf')
151   }
152
153   file {'/var/lib/cassiopeia/logs':
154     ensure => 'directory',
155   }
156
157   file {'/var/lib/cassiopeia/profiles':
158     ensure => 'directory',
159     source => 'puppet:///modules/cassiopeia_client/profiles',
160     recurse => true,
161     purge => true
162   }
163   file {'/var/lib/cassiopeia/ca':
164     ensure => 'directory',
165     source => 'puppet:///modules/cassiopeia_client/ca',
166     recurse => true,
167   }
168
169   file {'/var/lib/cassiopeia/keys':
170     ensure => 'directory',
171     require => File['/var/lib/cassiopeia/']
172   }
173   file {'/var/lib/cassiopeia/keys/ca.crt':
174     ensure => 'file',
175     source => 'puppet:///modules/cassiopeia/ca.crt'
176   }
177   file {'/var/lib/cassiopeia/keys/signer_client.crt':
178     ensure => 'file',
179     source => 'puppet:///modules/cassiopeia/signer_client.crt'
180   }
181   file {'/var/lib/cassiopeia/keys/signer_client.key':
182     ensure => 'file',
183     source => 'puppet:///modules/cassiopeia/signer_client.key'
184   }
185
186   file { '/etc/systemd/system/cassiopeia-client.service':
187     source => 'puppet:///modules/gigi/cassiopeia-client.service',
188     ensure => 'present'
189   } ->
190   service{'cassiopeia-client.service':
191     provider => 'systemd',
192     require => [File['/var/lib/cassiopeia/config.txt'],
193             File['/var/lib/cassiopeia/ca'],
194             File['/var/lib/cassiopeia/logs'],
195             File['/var/lib/cassiopeia/profiles'],
196             File['/var/lib/cassiopeia/keys/ca.crt'],
197             File['/var/lib/cassiopeia/keys/signer_client.crt'],
198             File['/var/lib/cassiopeia/keys/signer_client.key'],
199             Exec['/gigi-ready']],
200     ensure => 'running'
201   }
202
203 }