openafs-tools-cmd-20020115
[openafs.git] / src / tools / install / install_afs
1 #!/bin/sh
2 #
3 # A command line interface to execute the installation of OpenAFS.
4 #
5 # openafs-tools, Version 1.2.2
6
7 # Copyright 2001, International Business Machines Corporation and others.
8 # All Rights Reserved.
9
10 # This software has been released under the terms of the IBM Public
11 # License.  For details, see the LICENSE file in the top-level source
12 # directory or online at http://www.openafs.org/dl/license10.html
13 #
14
15 afscodeDir=/usr/afs/tools/install/
16
17 firstServer=1
18 addServer=2
19 notServer=3
20
21 isClient=1
22 notClient=2
23
24 if [ $# -gt 0 ]; then 
25 if [ $1 = "help" ]; then 
26
27   echo -e "OpenAFS Installation for Linux: Help Mode\n"
28   echo -e "The command install_afs takes the following optional arguments.  If any\nneeded information is not provided on the command line, it will be\nprompted for the user to input.\n"
29   echo -e "\t-machineName (or -m) name: where name specifies\n\t  the name of the machine the command is being run on"
30   echo -e "\t-cellName (or -c) cell: where cell specifies the\n\t  name of the home cell of this machine"
31   echo -e "\t-shortCell (or -s) scell: where scell is the shortcut\n\t   name desired for the home cell.  Ignored if this\n\t   is not the first server"
32   echo -e "\t-hardDrive (or -h) hd: where hd is the device name on\n\t   which to mount the first AFS partition.  Ignored if this\n\t   is not a server"
33   echo -e "\t-serverType (or -st) type: where type can be \"first\",\n\t   \"additional\", or \"not\", specifying whether this is\n\t   to be the first server in a cell, an additional server\n\t   for the cell, or not a server at all"
34   echo -e "\t-clientType (or -ct) type: where type can be \"client\"\n\t   or \"not\", specifying whether this machine is to be an\n\t   AFS client or not"
35   echo -e "\t-adminPassword (or -p) password: the administrative\n\t    password of the cell.  Ignored if this is not a server"
36   echo -e "\t-existingServer (or -e) name: the name of an\n\t   existing server already in the cell.  Ignored if\n\t   this is not an additional server"
37   echo -e "\t-scriptDirectory (or -d) name: the name of the\n\t   directory containing these OpenAFS installation\n\t   scripts"
38   echo -e "\t-noConf (or -n): Do not ask for confirmation before\n\t    performing the installation."
39   echo -e "\thelp: Display this help dialogue"
40   echo
41   exit 0
42
43 fi fi
44
45 # Check the state file to ensure AFS is not installed already
46 if [ -r $afscodeDir/.afs_state ]; then
47   read state < $afscodeDir/.afs_state
48   if [ $state = "Install" ]; then
49     echo -e "You have already run the OpenAFS installation program.  You must uninstall OpenAFS before you install it again."
50     exit 0
51   fi
52 fi
53
54 while [ $# -gt 0 ]; do
55
56   flag=$1
57   if [ $# -ne 0 ]; then 
58     shift
59   fi
60   if [ $flag != "-noConf" -a $flag != "-n" ]; then
61     val=$1
62     if [ $# -ne 0 ]; then 
63       shift
64     fi
65   else 
66     val=1
67   fi
68
69   # if the value is empty
70   if [ -z $val ]; then
71     echo -e No value given to $flag flag.  Use \"install_afs help\" for syntax.
72     exit 0
73   fi
74   # if the value is a flag
75   if [ -z ${val##-*} ]; then
76     echo -e No value given to $flag flag.  Use \"install_afs help\" for syntax.
77     exit 0
78   fi
79
80   if [ $flag = "-machineName" -o $flag = "-m" ]; then
81      machineName=$val
82   else
83   if [ $flag = "-cellName" -o $flag = "-c" ]; then
84      cellName=$val
85   else
86   if [ $flag = "-shortCell" -o $flag = "-s" ]; then
87      shortCell=$val
88   else
89   if [ $flag = "-hardDrive" -o $flag = "-h" ]; then
90      hardDrive=$val
91   else
92   if [ $flag = "-scriptDirectory" -o $flag = "-d" ]; then
93      scriptDir=$val
94   else
95   if [ $flag = "-serverType" -o $flag = "-st" ]; then
96      server=$val
97      if [ $val = "first" ]; then
98        serverType=$firstServer
99      else if [ $val = "additional" ]; then
100        serverType=$addServer
101      else if [ $val = "not" ]; then
102        serverType=$notServer
103      else 
104        echo -e Invalid value for -serverType flag.  Use \"install_afs help\" for syntax.
105        exit 0;
106      fi fi fi
107       
108   else
109   if [ $flag = "-clientType" -o $flag = "-ct" ]; then
110      client=$val
111      if [ $val = "client" ]; then
112        clientType=$isClient
113      else if [ $val = "not" ]; then
114        clientType=$notClient
115      else 
116        echo -e Invalid value for $flag flag.  Use \"install_afs help\" for syntax.
117        exit 0;
118      fi fi
119       
120   else
121   if [ $flag = "-adminPassword" -o $flag = "-p" ]; then
122      adminPassword=$val
123   else 
124   if [ $flag = "-existingServer" -o $flag = "-e" ]; then
125      existingServer=$val
126   else
127   if [ $flag = "-noConf"  -o $flag = "-n" ]; then
128      noConf=$val
129   else
130     echo Invalid flag $flag.  Use \"install_afs help\" for syntax.
131     exit 0;
132   fi fi fi fi fi fi fi fi fi fi
133 done
134
135 # Collect variables not given:
136
137 echo
138 while [ -z $server ]; do
139   echo -ne "Provide the server type for this machine (\"first\", \"additional\", or \"not\"),\n   or hit enter to accept the default (\"first\"): "
140   read server
141
142   if [ -z $server ]; then
143     server="first"
144   fi
145
146   if [ $server = "first" ]; then
147     serverType=$firstServer
148   else if [ $server = "additional" ]; then
149     serverType=$addServer
150   else if [ $server = "not" ]; then
151     serverType=$notServer
152   else 
153     echo -e Invalid value for server type.  Please choose \"first\", \"additional\", or \"not\".
154     server=""
155   fi fi fi
156
157 done
158
159 while [ -z $client ]; do
160   echo -ne "Provide the client type for this machine (\"client\" or \"not\"), or hit enter to\n   accept the default (\"client\"): "
161   read client
162
163   if [ -z $client ]; then
164     client="client"
165   fi
166
167   if [ $client = "client" ]; then
168     clientType=$isClient
169   else if [ $client = "not" ]; then
170     clientType=$notClient
171   else 
172     echo -e Invalid value for client type.  Please choose \"client\" or \"not\".
173     client=""
174   fi fi
175
176 done
177
178 if [ $serverType -eq $notServer ]; then
179   if [ $clientType -eq $notClient ]; then
180      echo -e "This machine must be either a server or a client."
181      exit 0
182   fi
183 fi
184
185 while [ -z $cellName ]; do
186   echo -ne "Provide the name of the cell (in the form of cellname.domainname):\n   "
187   read cellName
188 done
189
190 while [ -z $machineName ]; do
191   read default < /etc/HOSTNAME
192   echo -ne "Provide the name of this machine, or hit enter to accept the\n   default ($default): "
193   read machineName
194
195   if [ -z $machineName ]; then
196     machineName=$default
197   fi
198
199 done
200
201 if [ $serverType -ne $notServer ]; then 
202     
203   while [ -z $hardDrive ]; do
204     echo -ne "Provide the name of the device on which to mount the AFS partition,\n   i.e. hda5: "
205     read hardDrive
206   done
207
208 fi
209
210 if [ $serverType -eq $firstServer ]; then 
211     
212   while [ -z $shortCell  ]; do
213     default=${cellName%%.*}
214     echo -ne "Provide a shortcut name for your cell, or press Enter to accept the\n   default ($default): "
215     read shortCell
216  
217     if [ -z $shortCell ]; then
218       shortCell=$default
219     fi
220
221   done
222
223 fi
224
225 if [ $serverType -eq $addServer ]; then 
226     
227   while [ -z $existingServer ]; do
228     echo -ne "Provide the name of the first server in this cell:\n   "
229     read existingServer
230   done
231
232 fi
233
234 while [ -z $scriptDir ]; do
235   default=$afscodeDir
236   echo -ne "Provide the directory of this installation script, or press Enter to accept\n   the default ($default): "
237   read scriptDir
238
239   if [ -z $scriptDir ]; then
240     scriptDir=$default
241   fi
242
243 done
244
245 if [ $serverType -ne $notServer ]; then 
246   while [ -z $adminPassword ]; do
247     echo -ne "Provide the administrative password of this cell: "
248     stty -echo echonl
249     read adminPassword
250     stty echo
251     echo -ne "Please confirm the password: "
252     stty -echo echonl
253     read adminPassword2
254     stty echo
255
256     if [ -z $adminPassword ]; then
257       echo -e "You must give a password"
258     else 
259     if [ -z $adminPassword2 ]; then
260       echo -e "You must confirm the password"
261       adminPassword=""
262     else
263     if [ $adminPassword != $adminPassword2 ]; then
264       echo -e "Passwords do not match"
265       adminPassword=""
266     fi fi fi
267   done
268 fi
269
270 # Make sure the needed files exist:
271 if [ $serverType -eq $addServer ]; then
272   while [ ! -e $scriptDir/afs/ -o ! -e $scriptDir/afs/ThisCell -o ! -e $scriptDir/afs/CellServDB -o ! -e $scriptDir/afs/KeyFile -o  ! -e $scriptDir/afs/UserList ]; do
273     echo -e "Needed files in $scriptDir/afs do not exist."
274     echo -e "Copy the following files from $existingServer to the specified locations:"
275     echo -e "- $existingServer:/usr/afs/etc/ThisCell to $machineName:$scriptDir/afs/ThisCell"
276     echo -e "- $existingServer:/usr/afs/etc/CellServDB to $machineName:$scriptDir/afs/CellServDB"
277     echo -e "- $existingServer:/usr/afs/etc/KeyFile to $machineName:$scriptDir/afs/KeyFile"
278     echo -e "- $existingServer:/usr/afs/etc/UserList to $machineName:$scriptDir/afs/UserList"
279     echo -e "- $existingServer:/usr/vice/etc/CellServDB to $machineName:$scriptDir/vice/CellServDB"
280     echo -e "Press Enter when ready"
281     read anykey
282   done
283 fi
284 if [ $serverType -ne $firstServer ]; then
285   while [ ! -e $scriptDir/vice/ -o  ! -e $scriptDir/vice/CellServDB ]; do
286     echo "Needed file in $scriptDir/vice does not exist."
287     echo -e "Copy the following file from an existing server to the specified location:"
288     echo -e "- CellServDB from $cellName to $machineName:$scriptDir/vice/CellServDB"
289     echo -e "Press Enter when ready"
290     read anykey
291   done
292 fi
293 echo
294 echo -e "You're about to install OpenAFS with the following configuration:"
295 echo -e "Machine name: $machineName"
296 echo -e "Cell name: $cellName"
297 if [ $serverType -eq $firstServer ]; then
298   echo -e "Shortcut cell name: $shortCell"
299 fi
300 if [ $serverType -ne $notServer ]; then
301   echo -e "Hard drive: $hardDrive"
302   echo -ne "adminPassword: "
303   i=0;
304   while [ $i -lt ${#adminPassword} ]; do
305     echo -ne "*"
306     i=$[i+1]
307   done
308   echo
309 fi
310 echo -e "Server: $server"
311 echo -e "Client: $client"
312 if [ $serverType -eq $addServer ]; then
313   echo -e "Existing server: $existingServer"
314 fi
315 echo -e "Script directory: $scriptDir"
316 echo
317 if [ -z $noConf ]; then
318   echo -ne "Would you like to continue with the installation? "
319   while [ -z $goAhead ]; do
320     echo -ne "(y/n): "
321     read goAhead
322
323     if [ -z $goAhead ]; then
324       :
325     else 
326     if [ $goAhead = "n" ]; then
327       echo -e "Aborting installation"
328       exit 0
329     else
330     if [ $goAhead != "y" ]; then
331       goAhead=""
332     fi fi fi
333
334   done
335 fi
336
337 #Start the installation
338
339 # the directory on which the hard drive partition will be mounted:
340 partition=/vicepa
341 #
342 #
343 # the password for the afs account:
344 afsPassword=$adminPassword
345 #
346 # Make sure the needed files exist:
347 if [ $serverType -eq $addServer ]; then
348   if [ ! -e $scriptDir/afs/ ]; then
349     echo "Needed directory $scriptDir/afs does not exist.  Aborting."
350     exit 1
351   fi
352   if [ ! -e $scriptDir/afs/ThisCell ]; then
353     echo "Needed file $scriptDir/afs/ThisCell does not exist.  Aborting."
354     exit 1
355   fi
356   if [ ! -e $scriptDir/afs/CellServDB ]; then
357     echo "Needed file $scriptDir/afs/CellServDB does not exist.  Aborting."
358     exit 1
359   fi
360   if [ ! -e $scriptDir/afs/KeyFile ]; then
361     echo "Needed file $scriptDir/afs/KeyFile does not exist.  Aborting."
362     exit 1
363   fi
364   if [ ! -e $scriptDir/afs/UserList ]; then
365     echo "Needed file $scriptDir/afs/UserList does not exist.  Aborting."
366     exit 1
367   fi
368 fi
369 if [ $serverType -ne $firstServer ]; then
370   if [ ! -e $scriptDir/vice/ ]; then
371     echo "Needed directory $scriptDir/vice does not exist.  Aborting."
372     exit 1
373   fi
374   if [ ! -e $scriptDir/vice/CellServDB ]; then
375     echo "Needed file $scriptDir/vice/CellServDB does not exist.  Aborting."
376     exit 1
377   fi
378 fi
379 # Write to the state file
380 echo "Install" > $scriptDir/.afs_state
381 echo "begin" >> $scriptDir/.afs_state
382 #
383 #
384 #
385 if [ $clientType -eq $isClient ]; then
386   echo Configuring /etc/pam.d/login
387   perl $scriptDir/write_pam.pl enable
388   cd /lib/security 
389   echo ln -s pam_afs.so.1 pam_afs.so
390   ln -s pam_afs.so.1 pam_afs.so
391 fi
392 #
393 # Remove files installed by OpenAFS rpms that are intrusive
394 echo "Removing troublesome files"
395 rm -f /usr/vice/etc/ThisCell
396 rm -f /usr/vice/etc/CellServDB
397 #
398 if [ $serverType -ne $notServer ]; then 
399   mkdir $partition
400   echo Configuring /etc/fstab 
401   perl $scriptDir/write_fstab.pl $hardDrive $partition
402   mount -a
403 #
404 #
405   echo Starting the BOS server
406   mkdir -p /usr/afs/etc
407   if [ $serverType -eq $addServer ]; then
408     # Move the needed file to /usr/afs/etc
409     echo Copying /usr/afs/etc/ files for additional server
410     cp -f $scriptDir/afs/ThisCell /usr/afs/etc/
411     cp -f $scriptDir/afs/CellServDB /usr/afs/etc/
412     cp -f $scriptDir/afs/KeyFile /usr/afs/etc/
413     cp -f $scriptDir/afs/UserList /usr/afs/etc/
414   fi     
415 #
416   if [ $serverType -eq $firstServer ]; then
417
418     echo /usr/afs/bin/bosserver -noauth
419     /usr/afs/bin/bosserver -noauth
420     echo bos setcellname $machineName $cellName -noauth
421     bos setcellname $machineName $cellName -noauth
422     echo bos listhosts $machineName -noauth
423     bos listhosts $machineName -noauth
424     echo bos addkey $machineName -key $afsPassword -kvno 0 -cell $cellName -noauth
425     bos addkey $machineName -key $afsPassword -kvno 0 -cell $cellName -noauth
426     
427     echo bos shutdown $machineName -noauth
428     bos shutdown $machineName -noauth
429     bosserver_process=$(ps -Ao pid,cmd | grep boss)
430     echo kill ${bosserver_process%% /*}
431     kill ${bosserver_process%% /*}
432
433     /usr/afs/bin/kaserver -noauth &
434  
435     echo Configuring kaserver
436     kas create afs -initial_password $afsPassword -cell $cellName -noauth
437     kas examine -name afs -cell $cellName -noauth
438     kas create admin -initial_password $adminPassword -cell $cellName -noauth
439     kas setfields admin -flags admin -cell $cellName -noauth
440     kas examine -name admin -cell $cellName -noauth
441     
442     kaserver_process=$(ps -Ao pid,cmd | grep kaserver)
443     echo kill ${kaserver_process%% /*}
444     kill ${kaserver_process%% /*}
445
446     echo Bootstrapping ptserver
447     echo -e "admin 128/20 1 -204 -204\nsystem:administrators 130/20 -204 -204 -204\n   admin   1\n" | pt_util -p /usr/afs/db/prdb.DB0 -w
448
449   fi
450
451   /usr/afs/bin/bosserver
452
453   if [ $serverType -ne $firstServer ]; then
454     # Define the upclients
455     echo bos create $machineName upclientetc simple "/usr/afs/bin/upclient $existingServer /usr/afs/etc" -cell $cellName -localauth
456     bos create $machineName upclientetc simple "/usr/afs/bin/upclient $existingServer /usr/afs/etc" -cell $cellName -localauth
457     echo bos create $machineName upclientbin simple "/usr/afs/bin/upclient $existingServer -clear /usr/afs/bin" -cell $cellName -localauth
458     bos create $machineName upclientbin simple "/usr/afs/bin/upclient $existingServer -clear /usr/afs/bin" -cell $cellName -localauth
459   fi
460 fi
461 #
462 #
463 if [ $serverType -eq $firstServer ]; then
464 #
465   echo Starting the Database Server Processes
466 #
467   echo bos create -server $machineName -instance kaserver -type simple -cmd /usr/afs/bin/kaserver -cell $cellName -localauth
468   bos create -server $machineName -instance kaserver -type simple -cmd /usr/afs/bin/kaserver -cell $cellName -localauth
469   echo bos create -server $machineName -instance buserver -type simple -cmd /usr/afs/bin/buserver -cell $cellName -localauth
470   bos create -server $machineName -instance buserver -type simple -cmd /usr/afs/bin/buserver -cell $cellName -localauth
471   echo bos create -server $machineName -instance ptserver -type simple -cmd /usr/afs/bin/ptserver -cell $cellName -localauth
472   bos create -server $machineName -instance ptserver -type simple -cmd /usr/afs/bin/ptserver -cell $cellName -localauth
473   echo bos create -server $machineName -instance vlserver -type simple -cmd /usr/afs/bin/vlserver -cell $cellName -localauth
474   bos create -server $machineName -instance vlserver -type simple -cmd /usr/afs/bin/vlserver -cell $cellName -localauth
475 #
476   echo bos adduser $machineName admin -cell $cellName -localauth
477   bos adduser $machineName admin -cell $cellName -localauth
478   echo bos restart $machineName -all -cell $cellName -localauth
479   bos restart $machineName -all -cell $cellName -localauth
480 #
481 fi
482 #
483 if [ $serverType -ne $notServer ]; then
484   echo Starting the File Server, Volume Server, and Salvager
485 #
486   echo bos create $machineName fs fs /usr/afs/bin/fileserver /usr/afs/bin/volserver /usr/afs/bin/salvager -cell $cellName -localauth
487   bos create $machineName fs fs /usr/afs/bin/fileserver /usr/afs/bin/volserver /usr/afs/bin/salvager -cell $cellName -localauth
488 # Verify success of fs:
489   echo bos status $machineName fs -long -localauth
490   bos status $machineName fs -long -localauth
491 #
492   if [ $serverType -eq $firstServer ]; then
493     # Wait for Ubik to elect a quorum
494     echo Waiting for a quorum election . . .
495     perl $scriptDir/check_udebug.pl $machineName
496     echo vos create $machineName $partition root.afs -cell $cellName -localauth 
497     vos create $machineName $partition root.afs -cell $cellName -localauth
498 #
499   else 
500     vos syncvldb $machineName -cell $cellName -verbose -localauth
501     vos syncserv $machineName -cell $cellName -verbose -localauth
502   fi
503 fi
504 #
505 if [ $serverType -eq $firstServer ]; then
506   echo Starting the Server Portion of the Update Server
507 #
508   echo bos create $machineName upserver simple "/usr/afs/bin/upserver -crypt /usr/afs/etc -clear /usr/afs/bin" -cell $cellName -localauth
509   bos create $machineName upserver simple "/usr/afs/bin/upserver -crypt /usr/afs/etc -clear /usr/afs/bin" -cell $cellName -localauth
510 #
511 #
512 fi
513 #
514 # Installing Client Functionality
515 #
516 echo Defining Cell Membership for Client Processes
517 #
518 if [ $serverType -eq $notServer ]; then
519   echo $cellName > /usr/vice/etc/ThisCell
520 fi
521 #
522 echo Creating the Client CellServDB File
523
524 cd /usr/vice/etc
525 if [ $serverType -ne $firstServer ]; then
526     # Move the CellServDB file to /usr/vice/etc
527     cp -f $scriptDir/vice/CellServDB /usr/vice/etc
528 fi
529 #
530 # copy correct afs setup file to etc/sysconfig
531 if [ $serverType -eq $notServer ]; then
532   cp -f $scriptDir/afsinit_client /etc/sysconfig/afs
533 else
534   cp -f $scriptDir/afsinit_both /etc/sysconfig/afs
535 fi
536 #
537 # Overview: Completing the Installation of the First AFS Machine
538 #
539 echo Verifying the AFS Initialization Script
540 #
541 if [ $serverType -ne $notServer ]; then
542   echo bos shutdown $machineName -localauth
543   bos shutdown $machineName -localauth
544   bosserver_process=$(ps -Ao pid,cmd | grep boss)
545   echo kill ${bosserver_process%% /*}
546   kill ${bosserver_process%% /*}
547 fi
548
549 #
550 echo Continuing with Verifying ths AFS Initialization Script
551 #
552 echo /etc/rc.d/init.d/afs start
553 /etc/rc.d/init.d/afs start
554 if [ $serverType -ne $notServer ]; then
555   # klog in as admin
556   echo klog admin -password 
557   klog admin -password $adminPassword
558   # verify klog worked correctly:
559   echo tokens
560   tokens
561   # verify each process is running normally:
562   echo bos status $machineName
563   bos status $machineName
564   cd /
565   echo fs checkvolumes
566   fs checkvolumes
567 fi
568 #
569 echo Activating the AFS Initialization Script
570 #
571 echo /sbin/chkconfig --add afs
572 /sbin/chkconfig --add afs
573 cd /usr/vice/etc
574 rm afs.rc afs.conf
575 ln -s /etc/rc.d/init.d/afs afs.rc
576 ln -s /etc/sysconfig/afs afs.conf
577 #
578 if [ $serverType -eq $firstServer ]; then
579   echo Configuring the Top Levels of the AFS Filespace
580 #
581   # Wait for Ubik to elect a quorum
582   echo Waiting for a quorum election . . .
583   perl $scriptDir/check_udebug.pl $machineName
584   
585   echo fs setacl /afs system:anyuser rl
586   fs setacl /afs -acl system:anyuser rl
587   echo vos create $machineName $partition root.cell
588   vos create $machineName $partition root.cell
589   echo fs mkmount /afs/$cellName root.cell
590   fs mkmount /afs/$cellName root.cell
591   echo fs setacl /afs/$cellName system:anyuser rl
592   fs setacl /afs/$cellName -acl system:anyuser rl
593   cd /afs
594   ln -s $cellName $shortCell
595   echo fs mkmount /afs/.$cellName root.cell -rw
596   fs mkmount /afs/.$cellName root.cell -rw
597
598 # stop the client
599   echo Stopping the client to replicate
600   cd /
601   umount /afs
602   /usr/vice/etc/afsd -shutdown
603   
604   echo vos addsite $machineName $partition root.afs -localauth
605   vos addsite $machineName $partition root.afs -localauth
606   echo vos addsite $machineName $partition root.cell -localauth
607   vos addsite $machineName $partition root.cell -localauth
608   echo vos release root.afs -localauth
609   vos release root.afs -localauth
610   echo vos release root.cell -localauth
611   vos release root.cell -localauth
612
613   /etc/rc.d/init.d/afs stop
614   # start the client again
615   echo Starting client again
616   /etc/rc.d/init.d/afs start
617   cd /afs
618
619   # klog in as admin
620   echo klog admin -password 
621   klog admin -password $adminPassword
622
623   # Wait for Ubik to elect a quorum
624   echo Waiting for a quorum election . . .
625   perl $scriptDir/check_udebug.pl $machineName
626   
627   echo fs examine /afs
628   fs examine /afs
629   echo fs examine /afs/$cellName
630   fs examine /afs/$cellName
631
632 #
633 #
634 fi
635 fs checkvolumes
636 #
637 if [ $clientType -ne $isClient ]; then
638 #
639   echo Removing Client Functionality
640 #
641   # Install correct config file  
642   cp -f $scriptDir/afsinit_server /etc/sysconfig/afs
643 #
644   cd /usr/vice/etc
645   ln -fs /usr/afs/etc/ThisCell ThisCell
646   ln -fs /usr/afs/etc/CellServDB CellServDB
647 #
648   /etc/rc.d/init.d/afs stop
649   /etc/rc.d/init.d/afs start
650 #
651 fi
652 # remove the tokens
653 unlog
654 #
655 # Write the done file
656 echo "Here is a summary of what was done:<br><ul>" > $scriptDir/done.txt
657 if [ $serverType -eq $firstServer ]; then 
658   echo "<li>Configured $machineName as the first server to the cell $cellName</li>" >> $scriptDir/done.txt
659   echo "<li>Created the server processes (vlserver, buserver, kaserver, and ptserver)</li>" >> $scriptDir/done.txt
660   echo "<li>Created /vicepa as a server partition</li>" >> $scriptDir/done.txt
661   echo "<li>Created an admin account</li>" >> $scriptDir/done.txt
662   echo "<li>Mounted a read-write version of root.cell at /afs/.$cellName</li>" >> $scriptDir/done.txt
663 fi
664 if [ $serverType -eq $addServer ]; then 
665   echo "<li>Configured $machineName as an additional server to the cell $cellName</li>" >> $scriptDir/done.txt
666   echo "<li>Created the update processes, using $existingServer as the first server</li>" >> $scriptDir/done.txt
667   echo "<li>Created /vicepa as a server partition</li>" >> $scriptDir/done.txt
668 fi
669 if [ $clientType -eq $isClient ]; then 
670   echo "<li>Configured $machineName as a client to the cell $cellName</li>" >> $scriptDir/done.txt
671 fi
672   echo "</ul><br>" >> $scriptDir/done.txt
673 if [ $serverType -eq $firstServer ]; then 
674   echo "<br>Here are some suggestions about how to get started using your cell:<br><ul>" >> $scriptDir/done.txt
675   echo "<li>Read the <a href=\"http://oss.software.ibm.com/developerworks/opensource/afs/docs.html\">OpenAFS documentation</a></li>" >> $scriptDir/done.txt
676   echo "<li>Create users for your cell</li>" >> $scriptDir/done.txt
677   echo "<li>Create volumes</li>" >> $scriptDir/done.txt
678   echo "<li>Configure other machines to be additional servers for this cell</li>" >> $scriptDir/done.txt
679   echo "<li>Make another partition (i.e. /vicepb) on which to store volumes</li>" >> $scriptDir/done.txt
680   echo "<li>Mount other cells in root.afs</li>" >> $scriptDir/done.txt
681   echo "</ul>" >> $scriptDir/done.txt
682 fi
683 # Write the state file
684 echo "Install" > $scriptDir/.afs_state
685 echo "complete" >> $scriptDir/.afs_state
686 #