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