- always recalculate PLC_API_MAINTENANCE_SOURCES; basically, make this
[myplc.git] / plc_config.xml
1 <?xml version="1.0"?>
2 <!DOCTYPE configuration PUBLIC "-//PlanetLab Central//DTD PLC configuration//EN" "configuration.dtd">
3
4 <configuration>
5   <variables>
6     <category id="plc">
7       <name>System</name>
8       <description>Basic system variables. Be sure that the values of
9       these variables are the same across all machines in your
10       installation.</description>
11
12       <variablelist>
13         <variable id="name" type="string">
14           <name>Name</name>
15           <value>PlanetLab Test</value>
16           <description>The name of this PLC installation. It is used in
17           the name of the default system site (e.g., PlanetLab Central)
18           and in the names of various administrative entities (e.g.,
19           PlanetLab Support).</description>
20         </variable>
21
22         <variable id="slice_prefix" type="string">
23           <name>Slice Prefix</name>
24           <value>pl</value>
25           <description>The abbreviated name of this PLC
26           installation. It is used as the prefix for system slices
27           (e.g., pl_conf). Warning: Currently, this variable should
28           not be changed.</description>
29         </variable>
30
31         <variable id="root_user" type="password">
32           <name>Root Account</name>
33           <value>root@test.planet-lab.org</value>
34           <description>The name of the initial administrative
35           account. We recommend that this account be used only to create
36           additional accounts associated with real
37           administrators, then disabled.</description>
38         </variable>
39
40         <variable id="root_password" type="password">
41           <name>Root Password</name>
42           <value>root</value>
43           <description>The password of the initial administrative
44           account. Also the password of the root account on the Boot
45           CD.</description>
46         </variable>
47
48         <!-- The following are not actually meant to be configurable
49              as variables. The web interface should allow the file to
50              be downloaded, or its contents replaced by a file upload,
51              but the actual <value> shouldn't need to be changed.  -->
52
53         <variable id="root_ssh_key_pub" type="file">
54           <name>Root SSH Public Key</name>
55           <value>/etc/planetlab/root_ssh_key.pub</value>
56           <description>The SSH public key used to access the root
57           account on your nodes.</description>
58         </variable>
59
60         <variable id="root_ssh_key" type="file">
61           <name>Root SSH Private Key</name>
62           <value>/etc/planetlab/root_ssh_key.rsa</value>
63           <description>The SSH private key used to access the root
64           account on your nodes.</description>
65         </variable>
66
67         <variable id="debug_ssh_key_pub" type="file">
68           <name>Debug SSH Public Key</name>
69           <value>/etc/planetlab/debug_ssh_key.pub</value>
70           <description>The SSH public key used to access the root
71           account on your nodes when they are in Debug mode.</description>
72         </variable>
73
74         <variable id="debug_ssh_key" type="file">
75           <name>Debug SSH Private Key</name>
76           <value>/etc/planetlab/debug_ssh_key.rsa</value>
77           <description>The SSH private key used to access the root
78           account on your nodes when they are in Debug mode.</description>
79         </variable>
80
81         <variable id="root_gpg_key_pub" type="file">
82           <name>Root GPG Public Keyring</name>
83           <value>/etc/planetlab/pubring.gpg</value>
84           <description>The GPG public keyring used to sign the Boot
85           Manager and all node packages.</description>
86         </variable>
87
88         <variable id="root_gpg_key" type="file">
89           <name>Root GPG Private Keyring</name>
90           <value>/etc/planetlab/secring.gpg</value>
91           <description>The SSH private key used to access the root
92           account on your nodes.</description>
93         </variable>
94       </variablelist>
95     </category>
96
97     <category id="plc_net">
98       <name>Network</name>
99       <description>Network environment.</description>
100
101       <variablelist>
102         <variable id="dns1" type="ip">
103           <name>Primary DNS Server</name>
104           <value>128.112.136.10</value>
105           <description>Primary DNS server address.</description>
106         </variable>
107
108         <variable id="dns2" type="ip">
109           <name>Secondary DNS Server</name>
110           <value>128.112.136.12</value>
111           <description>Secondary DNS server address.</description>
112         </variable>
113       </variablelist>
114     </category>
115
116     <category id="plc_mail">
117       <name>Mail</name>
118       <description>Many maintenance scripts, as well as the API and
119       web site themselves, send e-mail notifications and
120       warnings.</description>
121
122       <variablelist>
123         <variable id="enabled" type="boolean">
124           <name>Enable Mail</name>
125           <value>false</value>
126           <description>Set to false to suppress all e-mail notifications
127           and warnings.</description>
128         </variable>
129
130         <variable id="support_address">
131           <name>Support Address</name>
132           <value>root@localhost</value>
133           <description>This address is used for support
134           requests. Support requests may include traffic complaints,
135           security incident reporting, web site malfunctions, and
136           general requests for information. We recommend that the
137           address be aliased to a ticketing system such as Request
138           Tracker.</description>
139         </variable>
140
141         <variable id="boot_address">
142           <name>Boot Messages Address</name>
143           <value>root@localhost</value>
144           <description>The API will notify this address when a problem
145           occurs during node installation or boot. If a domain is not
146           specified, the default system domain will be used
147           name.</description>
148         </variable>
149       </variablelist>
150     </category>
151
152     <category id="plc_db">
153       <name>Database Server</name>
154       <description>Database server definitions.</description>
155
156       <variablelist>
157         <variable id="enabled" type="boolean">
158           <name>Enabled</name>
159           <value>true</value>
160           <description>Enable the database server on this
161           machine.</description>
162         </variable>
163
164         <variable id="type" type="string">
165           <name>Type</name>
166           <value>postgresql</value>
167           <description>The type of database server. Currently, only
168           postgresql is supported.</description>
169         </variable>
170
171         <variable id="host" type="hostname">
172           <name>Hostname</name>
173           <value>localhost</value>
174           <description>The fully qualified hostname or IP address of
175           the database server. This hostname must be resolvable and
176           reachable by the rest of your installation.</description>
177         </variable>
178
179         <variable id="name" type="string">
180           <name>Database Name</name>
181           <value>planetlab3</value>
182           <description>The name of the database to access.</description>
183         </variable>
184
185         <variable id="user" type="string">
186           <name>Database Username</name>
187           <value>pgsqluser</value>
188           <description>The username to use when accessing the
189           database.</description>
190         </variable>
191
192         <variable id="password" type="password">
193           <name>Database Password</name>
194           <value></value>
195           <description>The password to use when accessing the
196           database. If left blank, one will be
197           generated.</description>
198         </variable>
199       </variablelist>
200     </category>
201
202     <category id="plc_api">
203       <name>API Server</name>
204       <description>API (XML-RPC) server definitions.</description>
205
206       <variablelist>
207         <variable id="enabled" type="boolean">
208           <name>Enabled</name>
209           <value>true</value>
210           <description>Enable the API server on this
211           machine.</description>
212         </variable>
213
214         <variable id="debug" type="boolean">
215           <name>Debug</name>
216           <value>false</value>
217           <description>Enable verbose API debugging. Do not enable on
218           a production system!</description>
219         </variable>
220
221         <variable id="host" type="hostname">
222           <name>Hostname</name>
223           <value>localhost</value>
224           <description>The fully qualified hostname or IP address of
225           the API server. This hostname must be resolvable and
226           reachable by the rest of your installation, as well as your
227           nodes.</description>
228         </variable>
229
230         <variable id="port" type="int">
231           <name>Port</name>
232           <value>80</value>
233           <description>The TCP port number through which the API
234           should be accessed. Warning: SSL (port 443) access is not
235           fully supported by the website code yet. We recommend that
236           port 80 be used for now and that the API server either run
237           on the same machine as the web server, or that they both be
238           on a secure wired network.</description>
239         </variable>
240
241         <variable id="path" type="string">
242           <name>Path</name>
243           <value>/PLCAPI/</value>
244           <description>The base path of the API URL.</description>
245         </variable>
246
247         <variable id="maintenance_user" type="string">
248           <name>Maintenance User</name>
249           <value>maint@test.planet-lab.org</value>
250           <description>The username of the maintenance account. This
251           account is used by local scripts that perform automated
252           tasks, and cannot be used for normal logins.</description>
253         </variable>
254
255         <variable id="maintenance_password" type="password">
256           <name>Maintenance Password</name>
257           <value></value>
258           <description>The password of the maintenance account. If
259           left blank, one will be generated. We recommend that the
260           password be changed periodically.</description>
261         </variable>
262
263         <variable id="maintenance_sources" type="hostname">
264           <name>Authorized Hosts</name>
265           <value></value>
266           <description>A space-separated list of IP addresses allowed
267           to access the API through the maintenance account. The value
268           of this variable is set automatically to allow only the API,
269           web, and boot servers, and should not be
270           changed.</description>
271         </variable>
272
273         <!-- The following are not actually meant to be configurable
274              as variables. The web interface should allow the file to
275              be downloaded, or its contents replaced by a file upload,
276              but the actual <value> shouldn't need to be changed.  -->
277
278         <variable id="ssl_crt" type="file">
279           <name>SSL Certificate</name>
280           <value>/etc/planetlab/api_ssl.crt</value>
281           <description>The signed SSL certificate to use for HTTPS
282           access. If not specified or non-existent, a self-signed
283           certificate will be generated.</description>
284         </variable>
285
286         <variable id="ssl_key" type="file">
287           <name>SSL Key</name>
288           <value>/etc/planetlab/api_ssl.key</value>
289           <description>The corresponding SSL private key used for
290           signing the certificate, and for signing slice tickets. If
291           not specified or non-existent, one will be
292           generated.</description>
293         </variable>
294
295         <variable id="ssl_key_pub" type="file">
296           <name>SSL Key</name>
297           <value>/etc/planetlab/api_ssl.pub</value>
298           <description>The corresponding SSL public key. If not
299           specified or non-existent, one will be
300           generated.</description>
301         </variable>
302       </variablelist>
303     </category>
304
305     <category id="plc_www">
306       <name>Web Server</name>
307       <description>Web server definitions.</description>
308
309       <variablelist>
310         <variable id="enabled" type="boolean">
311           <name>Enabled</name>
312           <value>true</value>
313           <description>Enable the web server on this
314           machine.</description>
315         </variable>
316
317         <variable id="debug" type="boolean">
318           <name>Debug</name>
319           <value>false</value>
320           <description>Enable debugging output on web pages. Do not
321           enable on a production system!</description>
322         </variable>
323
324         <variable id="host" type="hostname">
325           <name>Hostname</name>
326           <value>localhost</value>
327           <description>The fully qualified hostname or IP address of
328           the web server. This hostname must be resolvable and
329           reachable by the rest of your installation, as well as your
330           nodes.</description>
331         </variable>
332
333         <variable id="port" type="int">
334           <name>Port</name>
335           <value>80</value>
336           <description>The TCP port number through which the
337           unprotected portions of the web site should be
338           accessed.</description>
339         </variable>
340
341         <variable id="ssl_port" type="int">
342           <name>SSL Port</name>
343           <value>443</value>
344           <description>The TCP port number through which the protected
345           portions of the web site should be accessed.</description>
346         </variable>
347
348         <!-- The following are not actually meant to be configurable
349              as variables. The web interface should allow the file to
350              be downloaded, or its contents replaced by a file upload,
351              but the actual <value> shouldn't need to be changed.  -->
352
353         <variable id="ssl_crt" type="file">
354           <name>SSL Certificate</name>
355           <value>/etc/planetlab/www_ssl.crt</value>
356           <description>The signed SSL certificate to use for HTTPS
357           access. If not specified or non-existent, a self-signed
358           certificate will be generated.</description>
359         </variable>
360
361         <variable id="ssl_key" type="file">
362           <name>SSL Key</name>
363           <value>/etc/planetlab/www_ssl.key</value>
364           <description>The corresponding SSL private key. If not
365           specified or non-existent, one will be
366           generated.</description>
367         </variable>
368       </variablelist>
369     </category>
370
371     <category id="plc_boot">
372       <name>Boot Server</name>
373       <description>Boot server definitions. Multiple boot servers
374       may be brought up for load balancing, but we recommend that a
375       single DNS round-robin system be implemented so that the
376       following variables are the same across all of
377       them.</description>
378
379       <variablelist>
380         <variable id="enabled" type="boolean">
381           <name>Enabled</name>
382           <value>true</value>
383           <description>Enable the boot server on this
384           machine.</description>
385         </variable>
386
387         <variable id="host" type="hostname">
388           <name>Hostname</name>
389           <value>localhost</value>
390           <description>The fully qualified hostname or IP address of
391           the boot server. This hostname must be resolvable and
392           reachable by the rest of your installation, as well as your
393           nodes.</description>
394         </variable>
395
396         <variable id="port" type="int">
397           <name>Port</name>
398           <value>80</value>
399           <description>The TCP port number through which the
400           unprotected portions of the boot server should be
401           accessed.</description>
402         </variable>
403
404         <variable id="ssl_port" type="int">
405           <name>SSL Port</name>
406           <value>443</value>
407           <description>The TCP port number through which the protected
408           portions of the boot server should be
409           accessed.</description>
410         </variable>
411
412         <!-- The following are not actually meant to be configurable
413              as variables. The web interface should allow the file to
414              be downloaded, or its contents replaced by a file upload,
415              but the actual <value> shouldn't need to be changed.  -->
416
417         <variable id="ssl_crt" type="binary">
418           <name>SSL Certificate</name>
419           <value>/etc/planetlab/boot_ssl.crt</value>
420           <description>The signed SSL certificate to use for HTTPS
421           access. If not specified, or non-existent a self-signed
422           certificate will be generated.</description>
423         </variable>
424
425         <variable id="ssl_key" type="binary">
426           <name>SSL Key</name>
427           <value>/etc/planetlab/boot_ssl.key</value>
428           <description>The corresponding SSL private key. If not
429           specified or non-existent, one will be
430           generated.</description>
431         </variable>
432       </variablelist>
433     </category>
434   </variables>
435
436   <comps>
437     <group>
438       <id>plc</id>
439       <name>PlanetLab Central</name>
440       <default>true</default>
441       <description>PlanetLab Central Packages</description>
442       <uservisible>true</uservisible>
443       <packagelist>
444         <!-- Sending mail -->
445         <packagereq type="mandatory">sendmail</packagereq>
446         <packagereq type="mandatory">sendmail-cf</packagereq>
447
448         <!-- (Optional) Synchronizing with PLC -->
449         <packagereq type="mandatory">rsync</packagereq>
450
451         <!-- Cron jobs -->
452         <packagereq type="mandatory">vixie-cron</packagereq>    
453
454         <!-- Other utilities -->
455         <packagereq type="mandatory">cvs</packagereq>
456         <packagereq type="mandatory">curl</packagereq>
457         <packagereq type="mandatory">wget</packagereq>
458
459         <!-- yum >=2.2 uses a new repository format -->
460         <packagereq type="mandatory">createrepo</packagereq>
461
462         <!-- For mkpasswd -->
463         <packagereq type="mandatory">expect</packagereq>
464
465         <!-- Almost all scripts are written in Python -->
466         <packagereq type="mandatory">python</packagereq>
467
468         <!-- For various Python scripts that access the API -->
469         <packagereq type="mandatory">plcapilib</packagereq>
470
471         <!-- Database server -->
472         <packagereq type="mandatory">postgresql</packagereq>
473         <packagereq type="mandatory">postgresql-server</packagereq>
474         <packagereq type="mandatory">postgresql-python</packagereq>
475
476         <!-- (Secure) web server -->
477         <packagereq type="mandatory">httpd</packagereq>
478         <packagereq type="mandatory">mod_ssl</packagereq>
479
480         <!-- Web pages are written primarily in PHP. A few pages still
481              access the DB directly. -->
482         <packagereq type="mandatory">php</packagereq>
483         <packagereq type="mandatory">php-pgsql</packagereq>
484         <packagereq type="mandatory">php-xmlrpc</packagereq>
485
486         <!-- Need GD for ImageCreate(), etc. -->
487         <packagereq type="mandatory">gd</packagereq>    
488         <packagereq type="mandatory">php-gd</packagereq>        
489
490         <!-- API server is implemented in mod_python -->
491         <packagereq type="mandatory">mod_python</packagereq>
492
493         <!-- API server uses a few non-standard packages -->
494         <packagereq type="mandatory">PyXML</packagereq>
495
496         <!-- API server uses SSL to sign tickets -->
497         <packagereq type="mandatory">xmlsec1</packagereq>
498         <packagereq type="mandatory">xmlsec1-openssl</packagereq>
499         <packagereq type="mandatory">openssl</packagereq>
500
501         <!-- bootcd is generated using mkisofs -->
502         <packagereq type="mandatory">mkisofs</packagereq>
503
504         <!-- bootcd and bootmanager images are signed using GPG -->
505         <packagereq type="mandatory">gnupg</packagereq>
506
507         <!-- bootmanager requires uuencode -->
508         <packagereq type="mandatory">sharutils</packagereq>
509       </packagelist>
510     </group>
511
512   </comps>
513
514 </configuration>