buildd: use a different configuration for buildd and pybuildd
[mirror/dsa-puppet.git] / modules / buildd / manifests / init.pp
1 class buildd ($ensure=present) {
2         # Do nothing until we get the buildd user from ldap
3         if $::buildd_user_exists {
4                 #
5                 # home directory
6                 #
7                 file { '/home/buildd':
8                         ensure  => directory,
9                         mode    => '2755',
10                         group   => buildd,
11                         owner   => buildd,
12                 }
13
14
15                 #
16                 # sbuild configuration, including chroots
17                 #
18                 include schroot
19
20                 package { 'sbuild':
21                         ensure => installed,
22                         tag    => extra_repo,
23                 }
24                 package { 'libsbuild-perl':
25                         ensure => installed,
26                         tag    => extra_repo,
27                         before => Package['sbuild']
28                 }
29                 file { '/etc/sbuild/sbuild.conf':
30                         source  => 'puppet:///modules/buildd/sbuild.conf',
31                         require => Package['sbuild'],
32                 }
33                 if $has_srv_buildd {
34                         concat::fragment { 'dsa-puppet-stuff--buildd-update-schroots':
35                                 target => '/etc/cron.d/dsa-puppet-stuff',
36                                 content  => @(EOF)
37                                         13 22 * * 0,3 root PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin setup-all-dchroots buildd
38                                         | EOF
39                         }
40                 }
41                 exec { 'add-buildd-user-to-sbuild':
42                         command => 'adduser buildd sbuild',
43                         onlyif  => "getent group sbuild > /dev/null && ! getent group sbuild | grep '\\<buildd\\>' > /dev/null"
44                 }
45
46
47                 #
48                 # dupload configuration
49                 #
50                 package { 'dupload':
51                         ensure => installed,
52                 }
53                 file { '/etc/dupload.conf':
54                         source  => 'puppet:///modules/buildd/dupload.conf',
55                         require => Package['dupload'],
56                 }
57                 include ferm::ftp_conntrack
58
59
60                 #
61                 # Aptitude killer
62                 #
63                 package { 'python-psutil':
64                         ensure => installed,
65                 }
66                 file { '/usr/local/sbin/buildd-schroot-aptitude-kill':
67                         source  => 'puppet:///modules/buildd/buildd-schroot-aptitude-kill',
68                         mode    => '0555',
69                 }
70
71                 concat::fragment { 'dsa-puppet-stuff--buildd-aptitude-killer':
72                         target => '/etc/cron.d/dsa-puppet-stuff',
73                         content  => @(EOF)
74                                 */5 * * * * root /usr/local/sbin/buildd-schroot-aptitude-kill
75                                 | EOF
76                 }
77
78
79                 #
80                 # GPG/SSH key generation
81                 #
82                 file { '/home/buildd/.gnupg':
83                         ensure  => directory,
84                         mode    => '700',
85                         group   => buildd,
86                         owner   => buildd,
87                 }
88                 file { '/home/buildd/.gnupg/gpg.conf':
89                         content  => "personal-digest-preferences SHA512\n",
90                         group   => buildd,
91                         owner   => buildd,
92                 }
93
94                 if ! $::buildd_key {
95                         exec { 'create-buildd-key':
96                                 command => '/bin/su - buildd -c \'mkdir -p -m 02700 .ssh && ssh-keygen -C "`whoami`@`hostname` (`date +%Y-%m-%d`)" -P "" -f .ssh/id_rsa -q\'',
97                                 onlyif  => '/usr/bin/getent passwd buildd > /dev/null && ! [ -e /home/buildd/.ssh/id_rsa ]'
98                         }
99                 }
100
101                 #
102                 # buildd/pybuildd configuration
103                 #
104                 if $::hostname in [x86-bm-01,x86-grnet-01,zani] {
105                         #
106                         # pybuildd configuration
107                         #
108
109                         # We still rely on buildd for some features. Install the package
110                         # but keep it disabled.
111                         package { 'buildd':
112                                 ensure => installed,
113                         }
114                         service { 'buildd':
115                                 enable => false,
116                                 ensure => 'stopped',
117                         }
118                         file { '/home/buildd/NO-DAEMON-PLEASE':
119                                 ensure => present,
120                         }
121                         file { '/home/buildd/.forward':
122                                 content  => "|/usr/bin/buildd-mail\n",
123                                 group   => buildd,
124                                 owner   => buildd,
125                         }
126
127                         package { ['python3-retrying', 'python3-yaml']:
128                                 ensure => installed,
129                         }
130                         file { '/home/buildd/.profile':
131                                 content  => @(EOT),
132                                         export XDG_RUNTIME_DIR="/run/user/$(id -u)"
133                                         export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
134                                         | EOT
135                                 group   => buildd,
136                                 owner   => buildd,
137                         }
138                         file { '/home/buildd/logs':
139                                 ensure  => directory,
140                                 mode    => '2750',
141                                 group   => buildd,
142                                 owner   => buildd,
143                         }
144                         file { '/var/lib/systemd/linger':
145                                 ensure  => directory,
146                                 mode    => '755',
147                         }
148                         file { "/var/lib/systemd/linger/buildd":
149                                 ensure => present,
150                         }
151                         file { '/etc/systemd/journald.conf.d':
152                                 ensure  => directory,
153                                 mode    => '755',
154                         }
155                         file { '/etc/systemd/journald.conf.d/persistency.conf':
156                                 source => 'puppet:///modules/systemd/persistency.conf',
157                         }
158                 } else {
159                         #
160                         # buildd configuration
161                         #
162                         file { '/home/buildd/build':
163                                 ensure  => directory,
164                                 mode    => '2750',
165                                 group   => buildd,
166                                 owner   => buildd,
167                         }
168                         file { '/home/buildd/logs':
169                                 ensure  => directory,
170                                 mode    => '2750',
171                                 group   => buildd,
172                                 owner   => buildd,
173                         }
174                         file { '/home/buildd/old-logs':
175                                 ensure  => directory,
176                                 mode    => '2750',
177                                 group   => buildd,
178                                 owner   => buildd,
179                         }
180                         file { '/home/buildd/upload-security':
181                                 ensure  => directory,
182                                 mode    => '2750',
183                                 group   => buildd,
184                                 owner   => buildd,
185                         }
186                         file { '/home/buildd/stats':
187                                 ensure  => directory,
188                                 mode    => '2755',
189                                 group   => buildd,
190                                 owner   => buildd,
191                         }
192                         file { '/home/buildd/stats/graphs':
193                                 ensure  => directory,
194                                 mode    => '2755',
195                                 group   => buildd,
196                                 owner   => buildd,
197                         }
198                         file { '/home/buildd/upload':
199                                 ensure  => directory,
200                                 mode    => '2755',
201                                 group   => buildd,
202                                 owner   => buildd,
203                         }
204                         file { '/home/buildd/.forward':
205                                 content  => "|/usr/bin/buildd-mail\n",
206                                 group   => buildd,
207                                 owner   => buildd,
208                         }
209
210                         package { 'buildd':
211                                 ensure => installed,
212                         }
213                         file { '/etc/buildd/buildd.conf':
214                                 source  => 'puppet:///modules/buildd/buildd.conf',
215                                 require => Package['buildd'],
216                         }
217
218                         if (versioncmp($::lsbmajdistrelease, '9') >= 0) {
219                                 site::aptrepo { 'buildd.debian.org':
220                                         ensure => absent,
221                                 }
222                                 file { '/etc/apt/apt.conf.d/puppet-https-buildd':
223                                         ensure => absent,
224                                 }
225                         } else {
226                                 site::aptrepo { 'buildd.debian.org':
227                                         key        => 'puppet:///modules/buildd/buildd.debian.org.gpg',
228                                         url        => 'https://apt.buildd.debian.org/',
229                                         suite      => 'jessie',
230                                         components => 'main',
231                                         require    => Package['apt-transport-https'],
232                                 }
233                                 file { '/etc/apt/apt.conf.d/puppet-https-buildd':
234                                         content => "Acquire::https::apt.buildd.debian.org::CaInfo \"/etc/ssl/ca-debian/ca-certificates.crt\";\n",
235                                 }
236                         }
237
238                         concat::fragment { 'dsa-puppet-stuff--buildd':
239                                 target => '/etc/cron.d/dsa-puppet-stuff',
240                                 source  => 'puppet:///modules/buildd/cron.d-dsa-buildd',
241                                 require => Package['debian.org']
242                         }
243                         service { 'buildd':
244                                 enable => false,
245                                 ensure => 'stopped',
246                         }
247                 }
248         }
249 }