/[adm]/puppet/modules/buildsystem/manifests/init.pp
ViewVC logotype

Contents of /puppet/modules/buildsystem/manifests/init.pp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 772 - (show annotations) (download)
Wed Jan 12 22:58:33 2011 UTC (13 years, 3 months ago) by boklm
File size: 6977 byte(s)
add youri acl config to be able to blacklist some packages
1 class buildsystem {
2
3 class base {
4 $build_login = "iurt"
5 $build_home_dir = "/home/$build_login"
6 $sched_login = "schedbot"
7 $sched_home_dir = "/home/$sched_login"
8 $repository_root = "/distrib/bootstrap"
9
10 include ssh::auth
11 ssh::auth::key { $build_login: } # declare a key for build bot: RSA, 2048 bits
12 ssh::auth::key { $sched_login: } # declare a key for sched bot: RSA, 2048 bits
13 }
14
15 class mainnode inherits base {
16 include iurtuser
17
18 sshuser { $sched_login:
19 homedir => $sched_home_dir,
20 comment => "System user used to schedule builds",
21 }
22
23 ssh::auth::client { $sched_login: }
24 ssh::auth::server { $sched_login: }
25 ssh::auth::server { $build_login: }
26
27 # FIXME Add again task-bs-cluster-main when it will require mgarepo instead of repsys
28 $package_list = ['iurt']
29 package { $package_list:
30 ensure => "installed"
31 }
32
33 apache::vhost_other_app { "repository.$domain":
34 vhost_file => "buildsystem/vhost_repository.conf",
35 }
36
37 apache::vhost_other_app { "pkgsubmit.$domain":
38 vhost_file => "buildsystem/vhost_pkgsubmit.conf",
39 }
40
41 include scheduler
42 include gatherer
43 include mgarepo
44 include youri_submit
45 }
46
47 class buildnode inherits base {
48 include iurt
49 }
50
51 class scheduler {
52 # ulri
53 include iurtupload
54 }
55
56 class gatherer {
57 # emi
58 include iurtupload
59 }
60
61 class iurtupload {
62 file { "/etc/iurt/upload.conf":
63 ensure => present,
64 owner => $build_login,
65 group => $build_login,
66 mode => 644,
67 require => File["/etc/iurt"],
68 content => template("buildsystem/upload.conf")
69 }
70 }
71
72 class mgarepo {
73 package { 'mgarepo':
74
75 }
76
77 package { 'rpm-build':
78 }
79
80 file { "repsys.conf":
81 path => "/etc/repsys.conf",
82 owner => root,
83 group => root,
84 mode => 644,
85 content => template("buildsystem/repsys.conf")
86 }
87
88 file { "$sched_home_dir/repsys":
89 ensure => "directory",
90 owner => $sched_login,
91 require => File[$sched_home_dir],
92 }
93
94 file { "$sched_home_dir/repsys/tmp":
95 ensure => "directory",
96 owner => $sched_login,
97 group => "mga-packagers",
98 mode => 1775,
99 require => File["$sched_home_dir/repsys"],
100 }
101
102 file { "$sched_home_dir/repsys/srpms":
103 ensure => "directory",
104 owner => $sched_login,
105 group => "mga-packagers",
106 mode => 1775,
107 require => File["$sched_home_dir/repsys"],
108 }
109 }
110
111 class youri_submit {
112 include sudo
113
114 file { "/usr/local/bin/mdv-youri-submit":
115 owner => root,
116 group => root,
117 mode => 755,
118 content => template("buildsystem/mdv-youri-submit")
119 }
120
121 file { "/usr/local/bin/mdv-youri-submit.wrapper":
122 owner => root,
123 group => root,
124 mode => 755,
125 content => template("buildsystem/mdv-youri-submit.wrapper")
126 }
127
128 sudo::sudoers_config { "mdv-youri-submit":
129 content => template("buildsystem/sudoers.youri")
130 }
131
132 file { "/etc/youri":
133 ensure => "directory",
134 }
135
136 file { "/etc/youri/submit-todo.conf":
137 ensure => present,
138 mode => 644,
139 require => File["/etc/youri"],
140 content => template("buildsystem/submit-todo.conf")
141 }
142
143 file { "/etc/youri/submit-upload.conf":
144 ensure => present,
145 mode => 644,
146 require => File["/etc/youri"],
147 content => template("buildsystem/submit-upload.conf")
148 }
149
150 file { "/etc/youri/acl.conf":
151 ensure => present,
152 mode => 644,
153 require => File["/etc/youri"],
154 content => template("buildsystem/youri_acl.conf")
155 }
156 }
157
158 define sshuser($homedir, $comment) {
159 group {"$title":
160 ensure => present,
161 }
162
163 user {"$title":
164 ensure => present,
165 comment => $comment,
166 managehome => true,
167 gid => $title,
168 shell => "/bin/bash",
169 notify => Exec["unlock$title"],
170 require => Group[$title],
171 }
172
173 # set password to * to unlock the account but forbid login through login
174 exec { "unlock$title":
175 command => "usermod -p '*' $title",
176 refreshonly => true,
177 }
178
179 file { $homedir:
180 ensure => "directory",
181 require => User[$title],
182 }
183
184 file { "$homedir/.ssh":
185 ensure => "directory",
186 mode => 600,
187 owner => $title,
188 group => $title,
189 require => File[$homedir],
190 }
191 }
192
193 class iurtuser {
194 sshuser { $build_login:
195 homedir => $build_home_dir,
196 comment => "System user used to run build bots",
197 }
198
199 file { "/etc/iurt":
200 ensure => "directory",
201 }
202 }
203
204 class iurt {
205 include sudo
206 include iurtuser
207 ssh::auth::client { $build_login: }
208 ssh::auth::server { $sched_login: user => $build_login }
209
210 # build node common settings
211 # we could have the following skip list to use less space:
212 # '/(drakx-installer-binaries|drakx-installer-advertising|gfxboot|drakx-installer-stage2|mandriva-theme)/'
213 $package_list = ['task-bs-cluster-chroot', 'iurt']
214 package { $package_list:
215 ensure => installed;
216 }
217
218 file { "/etc/iurt/build":
219 ensure => "directory",
220 require => File["/etc/iurt"],
221 }
222
223 file { "/etc/iurt/build/cauldron.conf":
224 ensure => present,
225 owner => $build_login,
226 group => $build_login,
227 mode => 644,
228 require => File["/etc/iurt/build"],
229 content => template("buildsystem/iurt.cauldron.conf")
230 }
231
232 file { "/etc/iurt/build/mandriva2010.1.conf":
233 ensure => present,
234 owner => $build_login,
235 group => $build_login,
236 mode => 644,
237 require => File["/etc/iurt/build"],
238 content => template("buildsystem/iurt.mandriva2010.1.conf")
239 }
240
241 sudo::sudoers_config { "iurt":
242 content => template("buildsystem/sudoers.iurt")
243 }
244 }
245
246 # temporary script to create home dir with ssh key
247 # taking login and url as arguments
248 class mgacreatehome {
249 file { "/usr/local/sbin/mgacreatehome":
250 ensure => present,
251 owner => root,
252 group => root,
253 mode => 700,
254 content => template("buildsystem/mgacreatehome")
255 }
256 }
257 }

  ViewVC Help
Powered by ViewVC 1.1.30