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