From 4759770ef749323b2eaf4af3f667d8fbe216ba90 Mon Sep 17 00:00:00 2001 From: lissav Date: Wed, 11 Jun 2008 18:45:47 +0000 Subject: [PATCH] Add setup of MN on AIX such that node can scp to the MN. git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@1628 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd --- xCAT-server/sbin/xcatconfig | 1286 +++++++++++++++++++++-------------- 1 file changed, 791 insertions(+), 495 deletions(-) diff --git a/xCAT-server/sbin/xcatconfig b/xCAT-server/sbin/xcatconfig index 33fdae34b..1f2182ea4 100644 --- a/xCAT-server/sbin/xcatconfig +++ b/xCAT-server/sbin/xcatconfig @@ -10,8 +10,8 @@ BEGIN { - $::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : '/opt/xcat'; - $::XCATDIR = $ENV{'XCATDIR'} ? $ENV{'XCATDIR'} : '/etc/xcat'; + $::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : '/opt/xcat'; + $::XCATDIR = $ENV{'XCATDIR'} ? $ENV{'XCATDIR'} : '/etc/xcat'; } use lib "$::XCATROOT/lib/perl"; @@ -22,401 +22,561 @@ use Socket; $::progname = "xcatconfig"; -Getopt::Long::Configure("bundling") ; -$Getopt::Long::ignorecase=0; +Getopt::Long::Configure("bundling"); +$Getopt::Long::ignorecase = 0; # parse the options -if(!GetOptions( - 'f|force' => \$::FORCE, - 'h|help' => \$::HELP, - 'v|version' => \$::VERSION,)) +if ( + !GetOptions( + 'f|force' => \$::FORCE, + 'h|help' => \$::HELP, + 'v|version' => \$::VERSION, + ) + ) { - &usage; - exit(1); + &usage; + exit(1); } # display the usage if -h or --help is specified -if ($::HELP) { - &usage; - exit(0); +if ($::HELP) +{ + &usage; + exit(0); } # display the version statement if -v or --verison is specified if ($::VERSION) { - xCAT::MsgUtils->message('I', "$::progname: version 1.0\n"); - exit(0); + xCAT::MsgUtils->message('I', "$::progname: version 1.0\n"); + exit(0); } -$::osname=`uname`; +$::osname = `uname`; chomp $::osname; -if ($::osname eq 'AIX') { - $::arch=`uname -p`; - $::root = ""; -} else { - $::arch=`uname -m`; - $::root = "/root"; +if ($::osname eq 'AIX') +{ + $::arch = `uname -p`; + $::root = ""; +} +else +{ + $::arch = `uname -m`; + $::root = "/root"; } chomp $::arch; chomp $::root; + # some Linux-only config # (used to FTP postscripts to nodes) -if ($::osname eq 'Linux') { +if ($::osname eq 'Linux') +{ + # Locally mount /var/ftp/install over /install - if ( ! -d "/var/ftp/install" ) { - my $cmd = "/bin/mkdir -p /var/ftp/install"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) - { - xCAT::MsgUtils->message('E', "Could not create /var/ftp/install directory.\n"); - } else { - xCAT::MsgUtils->message('I', "Created /var/ftp/install directory.\n"); - } - } - - # - # add /var/ftp/install to /etc/fstab and mount - if needed - # - my $changed_fstab=0; - my $cmd = "/bin/cat /etc/fstab | grep '/var/ftp/install'"; - my $outref = xCAT::Utils->runcmd("$cmd", -1); - if ($::RUNCMD_RC != 0) + if (!-d "/var/ftp/install") { - # ok - then add this entry - my $cmd = "/bin/echo '/install /var/ftp/install none bind,defaults 0 0' >> /etc/fstab"; + my $cmd = "/bin/mkdir -p /var/ftp/install"; my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) + if ($::RUNCMD_RC != 0) { - xCAT::MsgUtils->message('E', "Could not update the /etc/fstab file.\n"); - } else { - xCAT::MsgUtils->message('I', "Added /var/ftp/install to the /etc/fstab file.\n"); - $changed_fstab++; + xCAT::MsgUtils->message('E', + "Could not create /var/ftp/install directory.\n"); + } + else + { + xCAT::MsgUtils->message('I', + "Created /var/ftp/install directory.\n"); } } - if ($changed_fstab) { - # mount /var/ftp/install - my $cmd = "mount /var/ftp/install"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) - { - xCAT::MsgUtils->message('E', "Could not mount /var/ftp/install.\n"); - } else { - xCAT::MsgUtils->message('I', "/var/ftp/install has been mounted over /install.\n"); - } - } - # - # add /var/ftp/tftpboot to /etc/fstab and mount - if needed - # - my $changed_fstab=0; - my $cmd = "/bin/cat /etc/fstab | grep '/var/ftp/tftpboot'"; - my $outref = xCAT::Utils->runcmd("$cmd", -1); - if ($::RUNCMD_RC != 0) + # + # add /var/ftp/install to /etc/fstab and mount - if needed + # + my $changed_fstab = 0; + my $cmd = "/bin/cat /etc/fstab | grep '/var/ftp/install'"; + my $outref = xCAT::Utils->runcmd("$cmd", -1); + if ($::RUNCMD_RC != 0) { - # ok - then add this entry - my $cmd = "/bin/echo '/tftpboot /var/ftp/tftpboot none bind,defaults 0 0' >> /etc/fstab"; + + # ok - then add this entry + my $cmd = + "/bin/echo '/install /var/ftp/install none bind,defaults 0 0' >> /etc/fstab"; my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) + if ($::RUNCMD_RC != 0) { - xCAT::MsgUtils->message('E', "Could not update the /etc/fstab file.\n"); - } else { - xCAT::MsgUtils->message('I', "Added /var/ftp/tftpboot to the /etc/fstab file.\n"); - $changed_fstab++; + xCAT::MsgUtils->message('E', + "Could not update the /etc/fstab file.\n"); + } + else + { + xCAT::MsgUtils->message('I', + "Added /var/ftp/install to the /etc/fstab file.\n"); + $changed_fstab++; } } - if ($changed_fstab) { - # mount /var/ftp/tftpboot - my $cmd = "mount /var/ftp/tftpboot"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) - { - xCAT::MsgUtils->message('E', "Could not mount /var/ftp/tftpboot.\n"); - } else { - xCAT::MsgUtils->message('I', "/var/ftp/tftpboot has been mounted over /tftpboot.\n"); - } - } - - # start vsftpd - my $cmd = "/sbin/chkconfig vsftpd on"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - my $cmd = "/etc/rc.d/init.d/vsftpd restart"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) + if ($changed_fstab) + { + + # mount /var/ftp/install + my $cmd = "mount /var/ftp/install"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', "Could not mount /var/ftp/install.\n"); + } + else + { + xCAT::MsgUtils->message('I', + "/var/ftp/install has been mounted over /install.\n"); + } + } + + # + # add /var/ftp/tftpboot to /etc/fstab and mount - if needed + # + my $changed_fstab = 0; + my $cmd = "/bin/cat /etc/fstab | grep '/var/ftp/tftpboot'"; + my $outref = xCAT::Utils->runcmd("$cmd", -1); + if ($::RUNCMD_RC != 0) + { + + # ok - then add this entry + my $cmd = + "/bin/echo '/tftpboot /var/ftp/tftpboot none bind,defaults 0 0' >> /etc/fstab"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', + "Could not update the /etc/fstab file.\n"); + } + else + { + xCAT::MsgUtils->message('I', + "Added /var/ftp/tftpboot to the /etc/fstab file.\n"); + $changed_fstab++; + } + } + if ($changed_fstab) + { + + # mount /var/ftp/tftpboot + my $cmd = "mount /var/ftp/tftpboot"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', + "Could not mount /var/ftp/tftpboot.\n"); + } + else + { + xCAT::MsgUtils->message('I', + "/var/ftp/tftpboot has been mounted over /tftpboot.\n"); + } + } + + # start vsftpd + my $cmd = "/sbin/chkconfig vsftpd on"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + my $cmd = "/etc/rc.d/init.d/vsftpd restart"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', "Could not start VSFTPD.\n"); + } + else { - xCAT::MsgUtils->message('E', "Could not start VSFTPD.\n"); - } else { xCAT::MsgUtils->message('I', "VSFTPD has been restarted.\n"); - } + } -} # - some Linux-only config +} # - some Linux-only config # -# Generate ssh keys +# Generate ssh keys # -if ( (! -f "/install/postscripts/hostkeys/ssh_host_key") || $::FORCE){ +if ((!-f "/install/postscripts/hostkeys/ssh_host_key") || $::FORCE) +{ - # create /install/postscripts/hostkeys if needed - if ( ! -d "/install/postscripts/hostkeys" ) { - my $cmd = "/bin/mkdir -p /install/postscripts/hostkeys"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) - { - xCAT::MsgUtils->message('E', "Could not create /install/postscripts/hostkeys directory.\n"); - } else { - xCAT::MsgUtils->message('I', "Created /install/postscripts/hostkeys directory.\n"); - } - } - - if ($::FORCE){ - # remove the old keys - my $cmd = "/bin/rm /install/postscripts/hostkeys/ssh_host*"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) - { - xCAT::MsgUtils->message('E', "Could not remove ssh keys from /install/postscripts/hostkeys directory.\n"); - } else { - xCAT::MsgUtils->message('I', "Removed ssh keys from /install/postscripts/hostkeys directory.\n"); - } - } - - xCAT::MsgUtils->message('I', "Generating SSH1 RSA Key...\n"); - my $cmd = "/usr/bin/ssh-keygen -t rsa1 -f /install/postscripts/hostkeys/ssh_host_key -C '' -N ''"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) - { - xCAT::MsgUtils->message('E', "Could not generate SSH1 RSA key.\n"); - } - - xCAT::MsgUtils->message('I', "Generating SSH2 RSA Key...\n"); - my $cmd = "/usr/bin/ssh-keygen -t rsa -f /install/postscripts/hostkeys/ssh_host_rsa_key -C '' -N ''"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) + # create /install/postscripts/hostkeys if needed + if (!-d "/install/postscripts/hostkeys") { - xCAT::MsgUtils->message('E', "Could not generate SSH2 RSA key.\n"); - } + my $cmd = "/bin/mkdir -p /install/postscripts/hostkeys"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', + "Could not create /install/postscripts/hostkeys directory.\n"); + } + else + { + xCAT::MsgUtils->message('I', + "Created /install/postscripts/hostkeys directory.\n"); + } + } - xCAT::MsgUtils->message('I', "Generating SSH2 DSA Key...\n"); - my $cmd = "/usr/bin/ssh-keygen -t dsa -f /install/postscripts/hostkeys/ssh_host_dsa_key -C '' -N ''"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) + if ($::FORCE) + { + + # remove the old keys + my $cmd = "/bin/rm /install/postscripts/hostkeys/ssh_host*"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message( + 'E', + "Could not remove ssh keys from /install/postscripts/hostkeys directory.\n" + ); + } + else + { + xCAT::MsgUtils->message( + 'I', + "Removed ssh keys from /install/postscripts/hostkeys directory.\n" + ); + } + } + + xCAT::MsgUtils->message('I', "Generating SSH1 RSA Key...\n"); + my $cmd = + "/usr/bin/ssh-keygen -t rsa1 -f /install/postscripts/hostkeys/ssh_host_key -C '' -N ''"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', "Could not generate SSH1 RSA key.\n"); + } + + xCAT::MsgUtils->message('I', "Generating SSH2 RSA Key...\n"); + my $cmd = + "/usr/bin/ssh-keygen -t rsa -f /install/postscripts/hostkeys/ssh_host_rsa_key -C '' -N ''"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', "Could not generate SSH2 RSA key.\n"); + } + + xCAT::MsgUtils->message('I', "Generating SSH2 DSA Key...\n"); + my $cmd = + "/usr/bin/ssh-keygen -t dsa -f /install/postscripts/hostkeys/ssh_host_dsa_key -C '' -N ''"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) { xCAT::MsgUtils->message('E', "Could not generate SSH2 DSA key.\n"); } -} else { - xCAT::MsgUtils->message('I', "/install/postscripts/hostkeys directory exists, no keys generated. Use --force option to generate new keys.\n"); +} +else +{ + xCAT::MsgUtils->message( + 'I', + "/install/postscripts/hostkeys directory exists, no keys generated. Use --force option to generate new keys.\n" + ); } # # move old directories if they exist -if (-d "/install/postscripts/.ssh") { - my $cmd = "/bin/mv /install/postscripts/.ssh /install/postscripts/_ssh"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) - { - xCAT::MsgUtils->message('E', "Could not move /install/postscripts/.ssh directory to /install/postscripts/_ssh.\n"); - } else { - xCAT::MsgUtils->message('I', "Moved /install/postscripts/.ssh directory to /install/postscripts/_ssh.\n"); - } +if (-d "/install/postscripts/.ssh") +{ + my $cmd = "/bin/mv /install/postscripts/.ssh /install/postscripts/_ssh"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message( + 'E', + "Could not move /install/postscripts/.ssh directory to /install/postscripts/_ssh.\n" + ); + } + else + { + xCAT::MsgUtils->message( + 'I', + "Moved /install/postscripts/.ssh directory to /install/postscripts/_ssh.\n" + ); + } } -if (-d "/install/postscripts/.xcat") { - my $cmd = "/bin/mv /install/postscripts/.xcat /install/postscripts/_xcat"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) - { - xCAT::MsgUtils->message('E', "Could not move /install/postscripts/.xcat directory to /install/postscripts/_xcat.\n"); - } else { - xCAT::MsgUtils->message('I', "Moved /install/postscripts/.xcat directory to /install/postscripts/_xcat.\n"); - } +if (-d "/install/postscripts/.xcat") +{ + my $cmd = "/bin/mv /install/postscripts/.xcat /install/postscripts/_xcat"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message( + 'E', + "Could not move /install/postscripts/.xcat directory to /install/postscripts/_xcat.\n" + ); + } + else + { + xCAT::MsgUtils->message( + 'I', + "Moved /install/postscripts/.xcat directory to /install/postscripts/_xcat.\n" + ); + } } # -# create /.ssh dir if needed +# create /.ssh dir if needed # my $sshdir = "$::root/.ssh"; -if ( ! -d $sshdir ) { - my $cmd = "/bin/mkdir -m 700 -p $sshdir"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) - { - xCAT::MsgUtils->message('E', "Could not create $sshdir directory.\n"); - } else { - xCAT::MsgUtils->message('I', "Created $sshdir directory.\n"); - } +if (!-d $sshdir) +{ + my $cmd = "/bin/mkdir -m 700 -p $sshdir"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', "Could not create $sshdir directory.\n"); + } + else + { + xCAT::MsgUtils->message('I', "Created $sshdir directory.\n"); + } } # # create or modify the -/.ssh/config file # my $cfgfile = "$::root/.ssh/config"; -if (( -f $cfgfile ) || $::FORCE) { - # it exists - so see if it needs to be updated - ???????? check!!! -# xCAT::MsgUtils->message('I', "Checking for \'StrictHostKeyChecking no\' in $cfgfile.\n"); - my $cmd = "/bin/cat $cfgfile | grep 'StrictHostKeyChecking no'"; - my $outref = xCAT::Utils->runcmd("$cmd", -1); - if ($::RUNCMD_RC != 0) { - # ok - then add this entry - my $cmd = "/bin/echo StrictHostKeyChecking no >> $cfgfile; chmod 600 $cfgfile"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) - { - xCAT::MsgUtils->message('E', "Could not update the $cfgfile file.\n"); - } else { - xCAT::MsgUtils->message('I', "Added updates to the $cfgfile file.\n"); - } - } -} else { - # file doesn't exist so just create it - my $cmd = "/bin/echo StrictHostKeyChecking no > $cfgfile; chmod 600 $cfgfile"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) - { - xCAT::MsgUtils->message('E', "Could not update the $cfgfile file.\n"); - } else { - xCAT::MsgUtils->message('I', "Added updates to the $cfgfile file.\n"); - } -} +if ((-f $cfgfile) || $::FORCE) +{ -# -# create /install/postscripts/_ssh if needed -# -if ( ! -d "/install/postscripts/_ssh" ) { - my $cmd = "/bin/mkdir -p /install/postscripts/_ssh"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) + # it exists - so see if it needs to be updated - ???????? check!!! + # xCAT::MsgUtils->message('I', "Checking for \'StrictHostKeyChecking no\' in $cfgfile.\n"); + my $cmd = "/bin/cat $cfgfile | grep 'StrictHostKeyChecking no'"; + my $outref = xCAT::Utils->runcmd("$cmd", -1); + if ($::RUNCMD_RC != 0) { - xCAT::MsgUtils->message('E', "Could not create /install/postscripts/_ssh directory.\n"); - } else { - xCAT::MsgUtils->message('I', "Created /install/postscripts/_ssh directory.\n"); + + # ok - then add this entry + my $cmd = + "/bin/echo StrictHostKeyChecking no >> $cfgfile; chmod 600 $cfgfile"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', + "Could not update the $cfgfile file.\n"); + } + else + { + xCAT::MsgUtils->message('I', + "Added updates to the $cfgfile file.\n"); + } + } +} +else +{ + + # file doesn't exist so just create it + my $cmd = + "/bin/echo StrictHostKeyChecking no > $cfgfile; chmod 600 $cfgfile"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', "Could not update the $cfgfile file.\n"); + } + else + { + xCAT::MsgUtils->message('I', "Added updates to the $cfgfile file.\n"); } } # -# Generate id_rsa.pub +# create /install/postscripts/_ssh if needed +# +if (!-d "/install/postscripts/_ssh") +{ + my $cmd = "/bin/mkdir -p /install/postscripts/_ssh"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', + "Could not create /install/postscripts/_ssh directory.\n"); + } + else + { + xCAT::MsgUtils->message('I', + "Created /install/postscripts/_ssh directory.\n"); + } +} + +# +# Generate id_rsa.pub # my $pubfile = "$::root/.ssh/id_rsa.pub"; my $rsafile = "$::root/.ssh/id_rsa"; -if (( ! -r $pubfile ) || $::FORCE) { +if ((!-r $pubfile) || $::FORCE) +{ + + if ($::FORCE) + { - if ($::FORCE){ # remove the old file my $cmd = "/bin/rm $::root/.ssh/id_rsa*"; my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) + if ($::RUNCMD_RC != 0) { - xCAT::MsgUtils->message('E', "Could not remove id_rsa files from $::root/.ssh directory.\n"); - } else { - xCAT::MsgUtils->message('I', "Removed id_rsa files from $::root/.ssh directory.\n"); + xCAT::MsgUtils->message( + 'E', + "Could not remove id_rsa files from $::root/.ssh directory.\n" + ); + } + else + { + xCAT::MsgUtils->message('I', + "Removed id_rsa files from $::root/.ssh directory.\n"); } } - my $cmd = "/usr/bin/ssh-keygen -t rsa -q -b 2048 -N '' -f $rsafile"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) - { - xCAT::MsgUtils->message('E', "Could not generate $pubfile.\n"); - } else { - xCAT::MsgUtils->message('I', "Generated $pubfile.\n"); - # copy it - my $cmd = "/bin/cp $pubfile /install/postscripts/_ssh/authorized_keys"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) - { - xCAT::MsgUtils->message('E', "Could not copy $pubfile to /install/postscripts/_ssh/authorized_keys.\n"); - } else { - xCAT::MsgUtils->message('I', "Copied $pubfile to /install/postscripts/_ssh/authorized_keys.\n"); - } - } + my $cmd = "/usr/bin/ssh-keygen -t rsa -q -b 2048 -N '' -f $rsafile"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', "Could not generate $pubfile.\n"); + } + else + { + xCAT::MsgUtils->message('I', "Generated $pubfile.\n"); + + # copy it for install on node + my $cmd = "/bin/cp $pubfile /install/postscripts/_ssh/authorized_keys"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message( + 'E', + "Could not copy $pubfile to /install/postscripts/_ssh/authorized_keys.\n" + ); + } + else + { + xCAT::MsgUtils->message( + 'I', + "Copied $pubfile to /install/postscripts/_ssh/authorized_keys.\n" + ); + } + + # allows node be able to scp to the MN + my $cmd = "/bin/cat $pubfile >> /.ssh/authorized_keys"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', + "Could not cat $pubfile to /.ssh/authorized_keys.\n"); + } + else + { + xCAT::MsgUtils->message('I', + "Added $pubfile to /.ssh/authorized_keys.\n"); + chmod 0600, "/.ssh/authorized_keys"; + } + } } # -# create /var/log/consoles if needed +# create /var/log/consoles if needed # -if ( ! -d "/var/log/consoles" ) { - my $cmd = "/bin/mkdir -p /var/log/consoles"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) - { - xCAT::MsgUtils->message('E', "Could not create /var/log/consoles directory.\n"); - } else { - xCAT::MsgUtils->message('I', "Created /var/log/consoles directory.\n"); - } +if (!-d "/var/log/consoles") +{ + my $cmd = "/bin/mkdir -p /var/log/consoles"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', + "Could not create /var/log/consoles directory.\n"); + } + else + { + xCAT::MsgUtils->message('I', "Created /var/log/consoles directory.\n"); + } } # some Linux-only config -if ($::osname eq 'Linux') { +if ($::osname eq 'Linux') +{ - my $changed_exports=0; + my $changed_exports = 0; - # - # add tftpboot to /etc/exports - if needed - # + # + # add tftpboot to /etc/exports - if needed + # - my $cmd = "/bin/cat /etc/exports | grep '/tftpboot'"; - my $outref = xCAT::Utils->runcmd("$cmd", -1); - if ($::RUNCMD_RC != 0) + my $cmd = "/bin/cat /etc/exports | grep '/tftpboot'"; + my $outref = xCAT::Utils->runcmd("$cmd", -1); + if ($::RUNCMD_RC != 0) { - # ok - then add this entry - #SECURITY: this has potential for sharing private host/user keys - my $cmd = "/bin/echo '/tftpboot *(rw,root_squash,sync)' >> /etc/exports"; + # ok - then add this entry + #SECURITY: this has potential for sharing private host/user keys + my $cmd = + "/bin/echo '/tftpboot *(rw,root_squash,sync)' >> /etc/exports"; my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) + if ($::RUNCMD_RC != 0) { - xCAT::MsgUtils->message('E', "Could not update the /etc/exports file.\n"); - } else { - xCAT::MsgUtils->message('I', "Added /tftpboot to the /etc/exports file.\n"); - $changed_exports++; + xCAT::MsgUtils->message('E', + "Could not update the /etc/exports file.\n"); } - } + else + { + xCAT::MsgUtils->message('I', + "Added /tftpboot to the /etc/exports file.\n"); + $changed_exports++; + } + } - # + # # add /install to /etc/exports - if needed # my $cmd = "/bin/cat /etc/exports | grep '/install'"; my $outref = xCAT::Utils->runcmd("$cmd", -1); - if ($::RUNCMD_RC != 0) + if ($::RUNCMD_RC != 0) { + # ok - then add this entry #SECURITY: this has potential for sharing private host/user keys - my $cmd = "/bin/echo '/install *(ro,no_root_squash,sync)' >> /etc/exports"; + my $cmd = + "/bin/echo '/install *(ro,no_root_squash,sync)' >> /etc/exports"; my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) + if ($::RUNCMD_RC != 0) { - xCAT::MsgUtils->message('E', "Could not update the /etc/exports file.\n"); - } else { - xCAT::MsgUtils->message('I', "Added /install to the /etc/exports file.\n"); - $changed_exports++; + xCAT::MsgUtils->message('E', + "Could not update the /etc/exports file.\n"); + } + else + { + xCAT::MsgUtils->message('I', + "Added /install to the /etc/exports file.\n"); + $changed_exports++; } } - if ($changed_exports) { - # restart nfs - my $cmd = "/sbin/service nfs restart"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($changed_exports) + { - my $cmd = "/sbin/chkconfig nfs on"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) + # restart nfs + my $cmd = "/sbin/service nfs restart"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + + my $cmd = "/sbin/chkconfig nfs on"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', "Could not enable NFS.\n"); + } + else { - xCAT::MsgUtils->message('E', "Could not enable NFS.\n"); - } else { xCAT::MsgUtils->message('I', "NFS has been restarted.\n"); - } - } -} # - some Linux-only config + } + } +} # - some Linux-only config # -# create basic site definition +# create basic site definition # my $hname = `hostname`; chomp $hname; # some values common to both AIX & Linux -my $xcatport = "3001"; -my $xcatiport = "3002"; -my $tftpdir = "/tftpboot"; +my $xcatport = "3001"; +my $xcatiport = "3002"; +my $tftpdir = "/tftpboot"; my $installdir = "/install"; my ($name, $aliases, $addrtype, $length, @addrs) = gethostbyname($hname); @@ -424,19 +584,28 @@ my $master = inet_ntoa($addrs[0]); # set value based on OS my ($domain, $timezone); -if ($::osname eq 'AIX') { - ($domain = $hname) =~ s/^.*?\.//; - $timezone = $ENV{'TZ'}; -} else { +if ($::osname eq 'AIX') +{ + ($domain = $hname) =~ s/^.*?\.//; + $timezone = $ENV{'TZ'}; +} +else +{ $domain = `hostname -d`; - my $tz; - if ( -f "/etc/redhat-release") { - # on Redhat look for "ZONE" - $tz = `grep ^ZONE /etc/sysconfig/clock|cut -d= -f 2|sed -e 's/"//g'`; - } else { - # on SuSE look for "TIMEZONE" - $tz = `grep ^TIMEZONE /etc/sysconfig/clock|cut -d= -f 2|sed -e 's/"//g'`; - } + my $tz; + if (-f "/etc/redhat-release") + { + + # on Redhat look for "ZONE" + $tz = `grep ^ZONE /etc/sysconfig/clock|cut -d= -f 2|sed -e 's/"//g'`; + } + else + { + + # on SuSE look for "TIMEZONE" + $tz = + `grep ^TIMEZONE /etc/sysconfig/clock|cut -d= -f 2|sed -e 's/"//g'`; + } $timezone = $tz; } @@ -445,65 +614,94 @@ chomp $master; chomp $domain; # create basic site definition -if (( ! -r "/etc/xcat/site.sqlite" ) || $::FORCE){ - my $chtabcmds; - $chtabcmds = "$::XCATROOT/sbin/chtab key=xcatdport site.value=$xcatport;"; - $chtabcmds .= "$::XCATROOT/sbin/chtab key=xcatiport site.value=$xcatiport;"; - $chtabcmds .= "$::XCATROOT/sbin/chtab key=tftpdir site.value=$tftpdir;"; - $chtabcmds .= "$::XCATROOT/sbin/chtab key=installdir site.value=$installdir;"; - $chtabcmds .= "$::XCATROOT/sbin/chtab key=master site.value=$master;"; - $chtabcmds .= "$::XCATROOT/sbin/chtab key=domain site.value=$domain;"; - if ($::osname eq 'Linux') { - $chtabcmds .= "$::XCATROOT/sbin/chtab key=timezone site.value=$timezone"; - } - if ($::osname eq 'AIX') { - $chtabcmds .= "$::XCATROOT/sbin/chtab key=remoteshell site.value=/bin/rsh;"; - } +if ((!-r "/etc/xcat/site.sqlite") || $::FORCE) +{ + my $chtabcmds; + $chtabcmds = "$::XCATROOT/sbin/chtab key=xcatdport site.value=$xcatport;"; + $chtabcmds .= "$::XCATROOT/sbin/chtab key=xcatiport site.value=$xcatiport;"; + $chtabcmds .= "$::XCATROOT/sbin/chtab key=tftpdir site.value=$tftpdir;"; + $chtabcmds .= + "$::XCATROOT/sbin/chtab key=installdir site.value=$installdir;"; + $chtabcmds .= "$::XCATROOT/sbin/chtab key=master site.value=$master;"; + $chtabcmds .= "$::XCATROOT/sbin/chtab key=domain site.value=$domain;"; + if ($::osname eq 'Linux') + { + $chtabcmds .= + "$::XCATROOT/sbin/chtab key=timezone site.value=$timezone"; + } + if ($::osname eq 'AIX') + { + $chtabcmds .= + "$::XCATROOT/sbin/chtab key=remoteshell site.value=/bin/rsh;"; + } my $outref = xCAT::Utils->runcmd("$chtabcmds", 0); - if ($::RUNCMD_RC != 0) + if ($::RUNCMD_RC != 0) { xCAT::MsgUtils->message('E', "Could not create site definition.\n"); - } else { + } + else + { xCAT::MsgUtils->message('I', "Updated cluster site definition.\n"); } } # create default postscript list in postscripts table -if (( ! -r "/etc/xcat/postscripts.sqlite" ) || $::FORCE) { +if ((!-r "/etc/xcat/postscripts.sqlite") || $::FORCE) +{ my $chtabcmds; - $chtabcmds = "$::XCATROOT/sbin/chtab node=xcatdefaults postscripts.postscripts='syslog,,remoteshell';"; - $chtabcmds .= "$::XCATROOT/sbin/chtab node=service postscripts.postscripts='servicenode';"; + $chtabcmds = + "$::XCATROOT/sbin/chtab node=xcatdefaults postscripts.postscripts='syslog,,remoteshell';"; + $chtabcmds .= + "$::XCATROOT/sbin/chtab node=service postscripts.postscripts='servicenode';"; my $outref = xCAT::Utils->runcmd("$chtabcmds", 0); - if ($::RUNCMD_RC != 0) + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', + "Could not create postscripts definition.\n"); + } + else { - xCAT::MsgUtils->message('E', "Could not create postscripts definition.\n"); - } else { xCAT::MsgUtils->message('I', "Created postscripts definition.\n"); } } # create basic policy definition. -if (( ! -r "/etc/xcat/policy.sqlite" ) || $::FORCE) { - my $chtabcmds; - if ($::osname eq 'AIX' ) { - $chtabcmds = "$::XCATROOT/sbin/chtab priority=1 policy.name=root policy.rule=allow;"; - $chtabcmds .= "$::XCATROOT/sbin/chtab priority=4.4 policy.commands=getpostscript policy.rule=allow;"; - $chtabcmds .= "$::XCATROOT/sbin/chtab priority=4.5 policy.commands=getcredentials policy.rule=allow"; - } else { - $chtabcmds = "$::XCATROOT/sbin/chtab priority=1 policy.name=root policy.rule=allow;"; - $chtabcmds .= "$::XCATROOT/sbin/chtab priority=2 policy.commands=getbmcconfig policy.rule=allow;"; - $chtabcmds .= "$::XCATROOT/sbin/chtab priority=3 policy.commands=nextdestiny policy.rule=allow;"; - $chtabcmds .= "$::XCATROOT/sbin/chtab priority=4 policy.commands=getdestiny policy.rule=allow;"; - $chtabcmds .= "$::XCATROOT/sbin/chtab priority=4.4 policy.commands=getpostscript policy.rule=allow;"; - $chtabcmds .= "$::XCATROOT/sbin/chtab priority=4.5 policy.commands=getcredentials policy.rule=allow"; - } +if ((!-r "/etc/xcat/policy.sqlite") || $::FORCE) +{ + my $chtabcmds; + if ($::osname eq 'AIX') + { + $chtabcmds = + "$::XCATROOT/sbin/chtab priority=1 policy.name=root policy.rule=allow;"; + $chtabcmds .= + "$::XCATROOT/sbin/chtab priority=4.4 policy.commands=getpostscript policy.rule=allow;"; + $chtabcmds .= + "$::XCATROOT/sbin/chtab priority=4.5 policy.commands=getcredentials policy.rule=allow"; + } + else + { + $chtabcmds = + "$::XCATROOT/sbin/chtab priority=1 policy.name=root policy.rule=allow;"; + $chtabcmds .= + "$::XCATROOT/sbin/chtab priority=2 policy.commands=getbmcconfig policy.rule=allow;"; + $chtabcmds .= + "$::XCATROOT/sbin/chtab priority=3 policy.commands=nextdestiny policy.rule=allow;"; + $chtabcmds .= + "$::XCATROOT/sbin/chtab priority=4 policy.commands=getdestiny policy.rule=allow;"; + $chtabcmds .= + "$::XCATROOT/sbin/chtab priority=4.4 policy.commands=getpostscript policy.rule=allow;"; + $chtabcmds .= + "$::XCATROOT/sbin/chtab priority=4.5 policy.commands=getcredentials policy.rule=allow"; + } my $outref = xCAT::Utils->runcmd("$chtabcmds", 0); - if ($::RUNCMD_RC != 0) + if ($::RUNCMD_RC != 0) { xCAT::MsgUtils->message('E', "Could not create policy definition.\n"); - } else { + } + else + { xCAT::MsgUtils->message('I', "Created policy definition.\n"); } } @@ -513,14 +711,17 @@ if (( ! -r "/etc/xcat/policy.sqlite" ) || $::FORCE) { # # (use postscript to set up syslog -- leaving old code for now in case it # did something differnt) - my $cmd = "/install/postscripts/syslog"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) - { - xCAT::MsgUtils->message('E', "Could not set up syslog.\n"); - } else { - xCAT::MsgUtils->message('I', "syslog has been set up.\n"); - } +my $cmd = "/install/postscripts/syslog"; +my $outref = xCAT::Utils->runcmd("$cmd", 0); +if ($::RUNCMD_RC != 0) +{ + xCAT::MsgUtils->message('E', "Could not set up syslog.\n"); +} +else +{ + xCAT::MsgUtils->message('I', "syslog has been set up.\n"); +} + # # if backup file exists assume it's already set up #if (( ! -r "/etc/syslog.conf.ORIG" ) || $::FORCE) { @@ -549,137 +750,193 @@ if (( ! -r "/etc/xcat/policy.sqlite" ) || $::FORCE) { #} # -# set up the certificates for xcatd +# set up the certificates for xcatd # -if (( ! -d "/etc/xcat/ca" ) || $::FORCE) { - xCAT::MsgUtils->message('I', "\nSetting up basic certificates. Respond with a \'y\' when prompted.\n\n"); - my $cmd = "echo 'y\ny\ny\ny' |$::XCATROOT/share/xcat/scripts/setup-xcat-ca.sh 'xCAT CA'"; - xCAT::MsgUtils->message('I', "Running $cmd\n"); - my $rc = system($cmd); - if ($rc >> 8) +if ((!-d "/etc/xcat/ca") || $::FORCE) +{ + xCAT::MsgUtils->message( + 'I', + "\nSetting up basic certificates. Respond with a \'y\' when prompted.\n\n" + ); + my $cmd = + "echo 'y\ny\ny\ny' |$::XCATROOT/share/xcat/scripts/setup-xcat-ca.sh 'xCAT CA'"; + xCAT::MsgUtils->message('I', "Running $cmd\n"); + my $rc = system($cmd); + if ($rc >> 8) + { + xCAT::MsgUtils->message('E', + "Could not create xCAT certificate in /etc/xcat/ca.\n"); + } + else { - xCAT::MsgUtils->message('E', "Could not create xCAT certificate in /etc/xcat/ca.\n"); - } else { xCAT::MsgUtils->message('I', "Created xCAT certificate.\n"); } } + # copy to postscript directory -my $cmd = "/bin/rm -rf /install/postscripts/ca &2>/dev/null"; +my $cmd = "/bin/rm -rf /install/postscripts/ca &2>/dev/null"; my $outref = xCAT::Utils->runcmd("$cmd", 0); -my $cmd = "/bin/mkdir -p /install/postscripts/ca"; +my $cmd = "/bin/mkdir -p /install/postscripts/ca"; my $outref = xCAT::Utils->runcmd("$cmd", 0); -if ($::RUNCMD_RC != 0) +if ($::RUNCMD_RC != 0) { - xCAT::MsgUtils->message('E', "Could not create /install/postscripts/ca directory.\n"); -} else { - xCAT::MsgUtils->message('I', "Created /install/postscripts/ca directory.\n"); + xCAT::MsgUtils->message('E', + "Could not create /install/postscripts/ca directory.\n"); +} +else +{ + xCAT::MsgUtils->message('I', + "Created /install/postscripts/ca directory.\n"); } my $cmd = "/bin/cp -r /etc/xcat/ca/* /install/postscripts/ca"; my $outref = xCAT::Utils->runcmd("$cmd", 0); -if ($::RUNCMD_RC != 0) +if ($::RUNCMD_RC != 0) { - xCAT::MsgUtils->message('E', "Could not copy /etc/xcat/ca/* to /install/postscripts/ca directory.\n"); -} else { - xCAT::MsgUtils->message('I', "Copied /etc/xcat/ca/* to /install/postscripts/ca directory.\n"); + xCAT::MsgUtils->message( + 'E', + "Could not copy /etc/xcat/ca/* to /install/postscripts/ca directory.\n" + ); +} +else +{ + xCAT::MsgUtils->message('I', + "Copied /etc/xcat/ca/* to /install/postscripts/ca directory.\n"); } -if (( ! -d "/etc/xcat/cert" ) || $::FORCE) { - my $cmd = "echo 'y\ny\ny\ny' |$::XCATROOT/share/xcat/scripts/setup-server-cert.sh $hname"; +if ((!-d "/etc/xcat/cert") || $::FORCE) +{ + my $cmd = + "echo 'y\ny\ny\ny' |$::XCATROOT/share/xcat/scripts/setup-server-cert.sh $hname"; xCAT::MsgUtils->message('I', "Running $cmd\n"); - my $rc = system($cmd); + my $rc = system($cmd); if ($rc >> 8) { - xCAT::MsgUtils->message('E', "Could not create xCAT certificate in /etc/xcat/cert.\n"); - } else { + xCAT::MsgUtils->message('E', + "Could not create xCAT certificate in /etc/xcat/cert.\n"); + } + else + { xCAT::MsgUtils->message('I', "Created xCAT certificate.\n"); } } + # copy to postscript directory -my $cmd = "/bin/rm -rf /install/postscripts/cert &2>/dev/null"; +my $cmd = "/bin/rm -rf /install/postscripts/cert &2>/dev/null"; my $outref = xCAT::Utils->runcmd("$cmd", 0); -my $cmd = "/bin/mkdir -p /install/postscripts/cert"; +my $cmd = "/bin/mkdir -p /install/postscripts/cert"; my $outref = xCAT::Utils->runcmd("$cmd", 0); -if ($::RUNCMD_RC != 0) +if ($::RUNCMD_RC != 0) { - xCAT::MsgUtils->message('E', "Could not create /install/postscripts/cert directory.\n"); -} else { - xCAT::MsgUtils->message('I', "Created /install/postscripts/cert directory.\n"); + xCAT::MsgUtils->message('E', + "Could not create /install/postscripts/cert directory.\n"); +} +else +{ + xCAT::MsgUtils->message('I', + "Created /install/postscripts/cert directory.\n"); } my $cmd = "/bin/cp -r /etc/xcat/cert/* /install/postscripts/cert"; my $outref = xCAT::Utils->runcmd("$cmd", 0); -if ($::RUNCMD_RC != 0) +if ($::RUNCMD_RC != 0) { - xCAT::MsgUtils->message('E', "Could not copy /etc/xcat/cert/* to /install/postscripts/cert directory.\n"); -} else { - xCAT::MsgUtils->message('I', "Copied /etc/xcat/cert/* to /install/postscripts/cert directory.\n"); + xCAT::MsgUtils->message( + 'E', + "Could not copy /etc/xcat/cert/* to /install/postscripts/cert directory.\n" + ); +} +else +{ + xCAT::MsgUtils->message('I', + "Copied /etc/xcat/cert/* to /install/postscripts/cert directory.\n"); } +if ((!-r "$::root/.xcat/client-key.pem") || $::FORCE) +{ -if ( ( ! -r "$::root/.xcat/client-key.pem") || $::FORCE){ - - my $cmd = "echo 'y\ny\ny\ny' |$::XCATROOT/share/xcat/scripts/setup-local-client.sh root"; - xCAT::MsgUtils->message('I', "Running $cmd\n"); - my $rc = system($cmd); + my $cmd = + "echo 'y\ny\ny\ny' |$::XCATROOT/share/xcat/scripts/setup-local-client.sh root"; + xCAT::MsgUtils->message('I', "Running $cmd\n"); + my $rc = system($cmd); if ($rc >> 8) { - xCAT::MsgUtils->message('E', "Could not create xCAT certificate in /.xcat/client-key.pem.\n"); - } else { + xCAT::MsgUtils->message('E', + "Could not create xCAT certificate in /.xcat/client-key.pem.\n"); + } + else + { xCAT::MsgUtils->message('I', "Created xCAT certificate.\n"); } } + # copy to postscript directory -my $cmd = "/bin/rm -rf /install/postscripts/_xcat &2>/dev/null"; +my $cmd = "/bin/rm -rf /install/postscripts/_xcat &2>/dev/null"; my $outref = xCAT::Utils->runcmd("$cmd", 0); -my $cmd = "/bin/mkdir -p /install/postscripts/_xcat"; +my $cmd = "/bin/mkdir -p /install/postscripts/_xcat"; my $outref = xCAT::Utils->runcmd("$cmd", 0); -if ($::RUNCMD_RC != 0) +if ($::RUNCMD_RC != 0) { - xCAT::MsgUtils->message('E', "Could not create /install/postscripts/_xcat directory.\n"); -} else { - xCAT::MsgUtils->message('I', "Created /install/postscripts/_xcat directory.\n"); + xCAT::MsgUtils->message('E', + "Could not create /install/postscripts/_xcat directory.\n"); +} +else +{ + xCAT::MsgUtils->message('I', + "Created /install/postscripts/_xcat directory.\n"); } my $cmd = "/bin/cp -r $::root/.xcat/* /install/postscripts/_xcat"; my $outref = xCAT::Utils->runcmd("$cmd", 0); -if ($::RUNCMD_RC != 0) +if ($::RUNCMD_RC != 0) { - xCAT::MsgUtils->message('E', "Could not copy $::root/.xcat/* to /install/postscripts/_xcat directory.\n"); -} else { - xCAT::MsgUtils->message('I', "Copied $::root/.xcat/* to /install/postscripts/_xcat directory.\n"); + xCAT::MsgUtils->message( + 'E', + "Could not copy $::root/.xcat/* to /install/postscripts/_xcat directory.\n" + ); +} +else +{ + xCAT::MsgUtils->message('I', + "Copied $::root/.xcat/* to /install/postscripts/_xcat directory.\n"); } # Make this system a management node my $cmd = "/bin/touch /etc/xCATMN"; my $outref = xCAT::Utils->runcmd("$cmd", 0); -if ($::RUNCMD_RC != 0) +if ($::RUNCMD_RC != 0) { - xCAT::MsgUtils->message('E', "Could not create /etc/xCATMN file.\n"); -} else { - xCAT::MsgUtils->message('I', "Created /etc/xCATMN file.\n"); + xCAT::MsgUtils->message('E', "Could not create /etc/xCATMN file.\n"); +} +else +{ + xCAT::MsgUtils->message('I', "Created /etc/xCATMN file.\n"); } # # if there are xcatd processes then stop them # my @xpids = xCAT::Utils->runcmd("ps -ef\|grep \"xcatd\"", 0); -if ($#xpids >= 1) { # will have at least "0" for the grep - xCAT::MsgUtils->message('I', "Stopping xcatd processes....\n"); - foreach $ps (@xpids) - { +if ($#xpids >= 1) +{ # will have at least "0" for the grep + xCAT::MsgUtils->message('I', "Stopping xcatd processes....\n"); + foreach $ps (@xpids) + { - $ps =~ s/^\s+//; # strip any leading spaces - my ($uid, $pid, $ppid, $desc) = split /\s+/, $ps; - # if $ps contains "grep" then it's not one of the daemon processes - if ( $ps !~/grep/) - { -# print "pid=$pid\n"; - my $cmd = "/bin/kill -9 $pid"; - xCAT::Utils->runcmd($cmd, 0); - if ($::RUNCMD_RC != 0) - { - xCAT::MsgUtils->message('E', "Could not stop xcatd process $pid.\n"); - } - } - } + $ps =~ s/^\s+//; # strip any leading spaces + my ($uid, $pid, $ppid, $desc) = split /\s+/, $ps; + + # if $ps contains "grep" then it's not one of the daemon processes + if ($ps !~ /grep/) + { + + # print "pid=$pid\n"; + my $cmd = "/bin/kill -9 $pid"; + xCAT::Utils->runcmd($cmd, 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', + "Could not stop xcatd process $pid.\n"); + } + } + } } # @@ -687,101 +944,136 @@ if ($#xpids >= 1) { # will have at least "0" for the grep # xCAT::MsgUtils->message('I', "Starting xcatd.....\n"); my $xcmd; -if ($::osname eq 'AIX') { - $xcmd = "$::XCATROOT/sbin/xcatd &"; -} else { - $xcmd = "/etc/init.d/xcatd start"; +if ($::osname eq 'AIX') +{ + $xcmd = "$::XCATROOT/sbin/xcatd &"; +} +else +{ + $xcmd = "/etc/init.d/xcatd start"; } my $outref = xCAT::Utils->runcmd("$xcmd", 0); -if ($::RUNCMD_RC != 0) +if ($::RUNCMD_RC != 0) { - xCAT::MsgUtils->message('E', "Could not start xcatd.\n"); -} + xCAT::MsgUtils->message('E', "Could not start xcatd.\n"); +} # more - Linux-only config -if ($::osname eq 'Linux') { +if ($::osname eq 'Linux') +{ - #Zap the almost certainly wrong pxelinux.cfg file - if ( -f "/tftpboot/pxelinux.cfg/default") { - $cmd = "/bin/rm /tftpboot/pxelinux.cfg/default"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) - { - xCAT::MsgUtils->message('E', "Could not remove /tftpboot/pxelinux.cfg/default\n"); - } else { - xCAT::MsgUtils->message('I', "Removed /tftpboot/pxelinux.cfg/default.\n"); - } - } + #Zap the almost certainly wrong pxelinux.cfg file + if (-f "/tftpboot/pxelinux.cfg/default") + { + $cmd = "/bin/rm /tftpboot/pxelinux.cfg/default"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', + "Could not remove /tftpboot/pxelinux.cfg/default\n"); + } + else + { + xCAT::MsgUtils->message('I', + "Removed /tftpboot/pxelinux.cfg/default.\n"); + } + } - # run mknb - if ($::arch eq "x86_64") { - my $cmd = "$::XCATROOT/sbin/mknb x86_64"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) - { - xCAT::MsgUtils->message('E', "The mknb x86_64 command returned error: $::RUNCMD_RC.\n"); - } else { - xCAT::MsgUtils->message('I', "The mknb x86_64 command was run with no error.\n"); - } - } - if ($::arch eq "ppc64") { - my $cmd = "$::XCATROOT/sbin/mknb ppc64"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) - { - xCAT::MsgUtils->message('E', "The mknb ppc64 command returned error: $::RUNCMD_RC.\n"); - } else { - xCAT::MsgUtils->message('I', "The mknb ppc64 command was run with no error.\n"); - } - } + # run mknb + if ($::arch eq "x86_64") + { + my $cmd = "$::XCATROOT/sbin/mknb x86_64"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', + "The mknb x86_64 command returned error: $::RUNCMD_RC.\n"); + } + else + { + xCAT::MsgUtils->message('I', + "The mknb x86_64 command was run with no error.\n"); + } + } + if ($::arch eq "ppc64") + { + my $cmd = "$::XCATROOT/sbin/mknb ppc64"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', + "The mknb ppc64 command returned error: $::RUNCMD_RC.\n"); + } + else + { + xCAT::MsgUtils->message('I', + "The mknb ppc64 command was run with no error.\n"); + } + } - # run makenetworks - my $cmd = "$::XCATROOT/sbin/makenetworks"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) - { - xCAT::MsgUtils->message('E', "The makenetworks command returned error: $::RUNCMD_RC.\n"); - } else { - xCAT::MsgUtils->message('I', "The makenetworks command was run with no error.\n") - } - - # set the nameserver in the site table - my @names = xCAT::Utils->runcmd("/bin/grep nameserver /etc/resolv.conf | cut -d' ' -f 2", 0); - my $ns = join(',',@names); - my $cmd = "$::XCATROOT/sbin/chtab key=nameservers site.value=$ns"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) - { - xCAT::MsgUtils->message('E', "The chtab command returned error: $::RUNCMD_RC.\n"); - } else { - xCAT::MsgUtils->message('I', "Updated the site definition with the value of the nameserver.\n"); - } - - # restart httpd - my $cmd = "/etc/rc.d/init.d/httpd stop; /etc/rc.d/init.d/httpd start"; - my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) - { - xCAT::MsgUtils->message('E', "Could not restart httpd.\n"); - } else { - xCAT::MsgUtils->message('I', "httpd has been restarted.\n"); - } - - # enable httpd - my $cmd = "/sbin/chkconfig httpd on"; + # run makenetworks + my $cmd = "$::XCATROOT/sbin/makenetworks"; my $outref = xCAT::Utils->runcmd("$cmd", 0); - if ($::RUNCMD_RC != 0) + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', + "The makenetworks command returned error: $::RUNCMD_RC.\n"); + } + else + { + xCAT::MsgUtils->message('I', + "The makenetworks command was run with no error.\n"); + } + + # set the nameserver in the site table + my @names = + xCAT::Utils->runcmd( + "/bin/grep nameserver /etc/resolv.conf | cut -d' ' -f 2", + 0); + my $ns = join(',', @names); + my $cmd = "$::XCATROOT/sbin/chtab key=nameservers site.value=$ns"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', + "The chtab command returned error: $::RUNCMD_RC.\n"); + } + else + { + xCAT::MsgUtils->message('I', + "Updated the site definition with the value of the nameserver.\n"); + } + + # restart httpd + my $cmd = "/etc/rc.d/init.d/httpd stop; /etc/rc.d/init.d/httpd start"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) + { + xCAT::MsgUtils->message('E', "Could not restart httpd.\n"); + } + else + { + xCAT::MsgUtils->message('I', "httpd has been restarted.\n"); + } + + # enable httpd + my $cmd = "/sbin/chkconfig httpd on"; + my $outref = xCAT::Utils->runcmd("$cmd", 0); + if ($::RUNCMD_RC != 0) { xCAT::MsgUtils->message('E', "Could not enable httpd.\n"); - } else { + } + else + { xCAT::MsgUtils->message('I', "httpd has been enabled.\n"); } - my $linux_note= "xCAT is now installed, it is recommended to tabedit networks \nand set a dynamic ip address range on any networks where nodes \nare to be discovered. Then, run makedhcp -n to create a new dhcpd \nconfiguration file, and \/etc\/init.d\/dhcpd restart. Either examine sample \nconfiguration templates, or write your own, or specify a value per \nnode with nodeadd or tabedit.\n"; - xCAT::MsgUtils->message('I', $linux_note); + my $linux_note = + "xCAT is now installed, it is recommended to tabedit networks \nand set a dynamic ip address range on any networks where nodes \nare to be discovered. Then, run makedhcp -n to create a new dhcpd \nconfiguration file, and \/etc\/init.d\/dhcpd restart. Either examine sample \nconfiguration templates, or write your own, or specify a value per \nnode with nodeadd or tabedit.\n"; + xCAT::MsgUtils->message('I', $linux_note); -} #End - more - Linux-only config +} #End - more - Linux-only config exit; @@ -789,8 +1081,12 @@ exit; # subroutines ##################################### -sub usage { - xCAT::MsgUtils->message('I', "Usage:\n"); - xCAT::MsgUtils->message('I', "xcatconfig - Performs basic xCAT configuration on an xCAT management node.\n\n"); - xCAT::MsgUtils->message('I', " xcatconfig [-h|--help] [-f|--force]\n\n"); +sub usage +{ + xCAT::MsgUtils->message('I', "Usage:\n"); + xCAT::MsgUtils->message( + 'I', + "xcatconfig - Performs basic xCAT configuration on an xCAT management node.\n\n" + ); + xCAT::MsgUtils->message('I', " xcatconfig [-h|--help] [-f|--force]\n\n"); }