]> git.donarmstrong.com Git - dsa-puppet.git/blob - modules/buildd/manifests/init.pp
Provide a default configuration file for buildds
[dsa-puppet.git] / modules / buildd / manifests / init.pp
1 class buildd ($ensure=present) {
2
3         include schroot
4
5         package { 'sbuild':
6                 ensure => installed,
7                 tag    => extra_repo,
8         }
9         package { 'libsbuild-perl':
10                 ensure => installed,
11                 tag    => extra_repo,
12                 before => Package['sbuild']
13         }
14
15         package { 'apt-transport-https':
16                 ensure => installed,
17         }
18         if $ensure == present {
19                 package { 'dupload':
20                         ensure => installed,
21                 }
22                 file { '/etc/dupload.conf':
23                         source  => 'puppet:///modules/buildd/dupload.conf',
24                         require => Package['dupload'],
25                 }
26                 package { 'buildd':
27                         ensure => installed,
28                 }
29                 file { '/etc/buildd/buildd.conf':
30                         source  => 'puppet:///modules/buildd/buildd.conf',
31                         require => Package['buildd'],
32                 }
33                 site::linux_module { 'dm_snapshot': }
34                 include ferm::ftp_conntrack
35         }
36
37         site::aptrepo { 'buildd':
38                 ensure => absent,
39         }
40
41         $suite = $::lsbdistcodename ? {
42                 squeeze  => $::lsbdistcodename,
43                 wheezy   => $::lsbdistcodename,
44                 jessie   => $::lsbdistcodename,
45                 stretch  => $::lsbdistcodename,
46                 undef   => 'squeeze',
47                 default => 'wheezy'
48         }
49
50         $buildd_apt_url = $::debarchitecture ? {
51                 /^sparc$/ => 'http://buildd.debian.org/apt/',
52                 default   => 'https://buildd.debian.org/apt/',
53         }
54
55         site::aptrepo { 'buildd.debian.org':
56                 key        => 'puppet:///modules/buildd/buildd.debian.org.gpg',
57                 url        => $buildd_apt_url,
58                 suite      => $suite,
59                 components => 'main',
60                 require    => Package['apt-transport-https'],
61         }
62
63         $buildd_prop_ensure = $::hostname ? {
64                 /^(alkman|zandonai)$/ => 'present',
65                 default => 'absent',
66         }
67
68         if ($::lsbmajdistrelease >= 8) {
69                 file { '/etc/apt/apt.conf.d/puppet-https-buildd':
70                         content => "Acquire::https::buildd.debian.org::CaInfo \"/etc/ssl/ca-debian/ca-certificates.crt\";\n",
71                 }
72         } else {
73                 file { '/etc/apt/apt.conf.d/puppet-https-buildd':
74                         content => "Acquire::https::buildd.debian.org::CaInfo \"/etc/ssl/servicecerts/buildd.debian.org.crt\";\n",
75                 }
76         }
77         site::aptrepo { 'buildd.debian.org-proposed':
78                 ensure     => $buildd_prop_ensure,
79                 url        => 'https://buildd.debian.org/apt/',
80                 suite      => "${suite}-proposed",
81                 components => 'main',
82                 require    => [ Package['apt-transport-https'],
83                                 File['/etc/apt/apt.conf.d/puppet-https-buildd'] ],
84         }
85
86         # 'bad' extension
87         file { '/etc/apt/preferences.d/buildd.debian.org':
88                 ensure => absent,
89         }
90         file { '/etc/apt/preferences.d/buildd':
91                 ensure => absent,
92         }
93         file { '/etc/cron.d/dsa-buildd':
94                 source  => 'puppet:///modules/buildd/cron.d-dsa-buildd',
95                 require => Package['debian.org']
96         }
97
98         if ($::lsbmajdistrelease >= 7 and $::kernel == 'Linux') {
99                 package { 'python-psutil':
100                         ensure => installed,
101                 }
102                 if ($::lsbmajdistrelease >= 8) {
103                         file { '/usr/local/sbin/buildd-schroot-aptitude-kill':
104                                 source  => 'puppet:///modules/buildd/buildd-schroot-aptitude-kill',
105                                 mode    => '0555',
106                         }
107                 } else {
108                         file { '/usr/local/sbin/buildd-schroot-aptitude-kill':
109                                 source  => 'puppet:///modules/buildd/buildd-schroot-aptitude-kill.wheezy',
110                                 mode    => '0555',
111                         }
112                 }
113         } else {
114                 file { '/usr/local/sbin/buildd-schroot-aptitude-kill':
115                         source  => 'puppet:///modules/buildd/buildd-schroot-aptitude-kill.squeeze',
116                         mode    => '0555',
117                 }
118         }
119         file { '/etc/cron.d/puppet-buildd-aptitude':
120                 content => "*/5 * * * * root /usr/local/sbin/buildd-schroot-aptitude-kill\n",
121         }
122
123         if $has_srv_buildd {
124                 file { '/etc/cron.d/puppet-update-buildd-schroots':
125                         content  => "13 21 * * 0 root PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin setup-all-dchroots buildd\n",
126                 }
127         }
128
129         file { '/home/buildd':
130                 ensure  => directory,
131                 mode    => '2755',
132                 group   => buildd,
133                 owner   => buildd,
134         }
135         file { '/home/buildd/build':
136                 ensure  => directory,
137                 mode    => '2750',
138                 group   => buildd,
139                 owner   => buildd,
140         }
141         file { '/home/buildd/logs':
142                 ensure  => directory,
143                 mode    => '2750',
144                 group   => buildd,
145                 owner   => buildd,
146         }
147         file { '/home/buildd/old-logs':
148                 ensure  => directory,
149                 mode    => '2750',
150                 group   => buildd,
151                 owner   => buildd,
152         }
153         file { '/home/buildd/upload-security':
154                 ensure  => directory,
155                 mode    => '2750',
156                 group   => buildd,
157                 owner   => buildd,
158         }
159         file { '/home/buildd/stats':
160                 ensure  => directory,
161                 mode    => '2755',
162                 group   => buildd,
163                 owner   => buildd,
164         }
165         file { '/home/buildd/stats/graphs':
166                 ensure  => directory,
167                 mode    => '2755',
168                 group   => buildd,
169                 owner   => buildd,
170         }
171         file { '/home/buildd/upload':
172                 ensure  => directory,
173                 mode    => '2755',
174                 group   => buildd,
175                 owner   => buildd,
176         }
177         file { '/home/buildd/.forward':
178                 content  => "|/usr/bin/buildd-mail\n",
179                 group   => buildd,
180                 owner   => buildd,
181         }
182
183         if ! $::buildd_key {
184                 exec { 'create-buildd-key':
185                         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\'',
186                         onlyif  => '/usr/bin/getent passwd buildd > /dev/null && ! [ -e /home/buildd/.ssh/id_rsa ]'
187                 }
188         }
189
190
191         if $::buildd_user_exists {
192                 exec { 'add-buildd-user-to-sbuild':
193                         command => 'adduser buildd sbuild',
194                         onlyif  => "getent group sbuild > /dev/null && ! getent group sbuild | grep '\\<buildd\\>' > /dev/null"
195                 }
196         }
197 }