diff --git a/perl-xCAT-2.0/xCAT/Postage.pm b/perl-xCAT-2.0/xCAT/Postage.pm index 415f163af..4aa0f2289 100644 --- a/perl-xCAT-2.0/xCAT/Postage.pm +++ b/perl-xCAT-2.0/xCAT/Postage.pm @@ -28,7 +28,7 @@ This program module file is a set of utilities to support xCAT post scripts. Error: Example: - xCAT::Postage->writescript($node, "/install/postscripts/" . $node, $state); + xCAT::Postage->writescript($node, "/install/postscripts/" . $node, $state,$callback); Comments: @@ -104,14 +104,19 @@ sub makescript { xCAT::MsgUtils->message("E", $rsp, $callback); return undef; } - my $master; + # read the master node from the site table for the node + my $master; # may be the Management Node or Service Node + my $sitemaster; # Always the Management Node my $sitetab = xCAT::Table->new('site'); (my $et) = $sitetab->getAttribs({key=>"master"},'value'); - if ($et and $et->{value}) { + if ($et and defined($et->{value})) { $master = $et->{value}; + $sitemaster = $et->{value}; + } + # if node has service node as master then override site master $et = $noderestab->getNodeAttribs($node,['xcatmaster']); - if ($et and $et->{'xcatmaster'}) { + if ($et and defined($et->{'xcatmaster'})) { $master = $et->{'xcatmaster'}; } unless ($master) { @@ -121,10 +126,29 @@ sub makescript { return undef; } + # read the ntpservers + my $ntpservers; + (my $et) = $sitetab->getAttribs({key=>"ntpservers"},'value'); + if ($et and defined($et->{value})) { + $ntpservers = $et->{value}; + + } + # set env variable $SITEMASTER for Management Node + push @scriptd, "SITEMASTER=".$sitemaster."\n"; + push @scriptd, "export SITEMASTER\n"; + + # set env variable $MASTER for master of node (MN or SN) push @scriptd, "MASTER=".$master."\n"; push @scriptd, "export MASTER\n"; push @scriptd, "NODE=$node\n"; push @scriptd, "export NODE\n"; + + # if ntpservers exist, export $NTPSERVERS + if (defined($ntpservers)) { + push @scriptd, "NTPSERVERS=".$ntpservers."\n"; + push @scriptd, "export NTPSERVERS\n"; + } + my $et = $typetab->getNodeAttribs($node,['os','arch','profile']); if ($^O =~ /^linux/i) { unless ($et and $et->{'os'} and $et->{'arch'}) { @@ -148,10 +172,8 @@ sub makescript { } push @scriptd, 'PATH=`dirname $0`:$PATH'."\n"; push @scriptd, "export PATH\n"; - - my $stab = xCAT::Table->new('site'); - my $sent = $stab->getAttribs({key=>'svloglocal'},'value'); - if ($sent and $sent->{value}) { + my $sent = $sitetab->getAttribs({key=>'svloglocal'},'value'); + if ($sent and defined($sent->{value})) { push @scriptd, "SVLOGLOCAL=".$sent->{'value'}."\n"; push @scriptd, "export SVLOGLOCAL\n"; } diff --git a/xCAT-server-2.0/lib/xcat/plugins/NTPsn.pm b/xCAT-server-2.0/lib/xcat/plugins/NTPsn.pm index 7a75a4add..6e5abf15c 100644 --- a/xCAT-server-2.0/lib/xcat/plugins/NTPsn.pm +++ b/xCAT-server-2.0/lib/xcat/plugins/NTPsn.pm @@ -16,8 +16,11 @@ use File::Path; #------------------------------------------------------- =head3 handled_commands +Note: Right now all function is commented out. May use in the future. +Service Node and Compute Node NTP is setup by setupntp scripts +Management Node is left to be setup by Admin -This runs on Service Node +This runs on Service Node and Management node to setup NTP Checks servicenode table ntpserver attribute Call setup_NTP @@ -33,41 +36,44 @@ sub handled_commands } my $rc = 0; + # Note all code is commented out now, setup done by setupntp + # postinstall script for the SN and compute nodes. Management Node + # is left up to the admin. This may change in the future. - if (xCAT::Utils->isServiceNode()) - { - my @nodeinfo = xCAT::Utils->determinehostname; - my $nodename = pop @nodeinfo; # get hostname - my @nodeipaddr = @nodeinfo; # get ip addresses - my $service = "ntpserver"; - $rc = xCAT::Utils->isServiceReq($nodename, $service, \@nodeipaddr); - if ($rc == 1) - { - $rc = &setup_NTPsn($nodename); #setup NTP on Service Node - if ($rc == 0) - { - xCAT::Utils->update_xCATSN($service); - } - } - else - { - if ($rc == 2) - { # just start the daemon - my $cmd = "service ntpd restart"; - system $cmd; - if ($? > 0) - { # error - xCAT::MsgUtils->message("S", "Error on command: $cmd"); - return 1; - } - } - } - } - else - { # Management Node - $rc = &setup_NTPmn(); # setup NTP on Management Node - - } +# if (xCAT::Utils->isServiceNode()) +# { +# my @nodeinfo = xCAT::Utils->determinehostname; +# my $nodename = pop @nodeinfo; # get hostname +# my @nodeipaddr = @nodeinfo; # get ip addresses +# my $service = "ntpserver"; +# $rc = xCAT::Utils->isServiceReq($nodename, $service, \@nodeipaddr); +# if ($rc == 1) +# { +# $rc = &setup_NTPsn($nodename); #setup NTP on Service Node +# if ($rc == 0) +# { +# xCAT::Utils->update_xCATSN($service); +# } +# } +# else +# { +# if ($rc == 2) +# { # just start the daemon +# my $cmd = "service ntpd restart"; +# system $cmd; +# if ($? > 0) +# { # error +# xCAT::MsgUtils->message("S", "Error on command: $cmd"); +# return 1; +# } +# } +# } +# } +# else +# { # Management Node +# $rc = &setup_NTPmn(); # setup NTP on Management Node +# +# } return $rc; } diff --git a/xCAT/postscripts/setupntp b/xCAT/postscripts/setupntp index 4f607fc64..9d6a502d2 100755 --- a/xCAT/postscripts/setupntp +++ b/xCAT/postscripts/setupntp @@ -6,24 +6,61 @@ # #--------------------------------------------------------------------------- master=$MASTER +setup=0 +sitemaster=$SITEMASTER conf_file="/etc/ntp.conf" +conf_file_org="/etc/ntp.conf.org" conf_file_backup="/etc/ntp.conf.postbackup" -# if backup does not exist, backup -if [ ! -f $conf_file_backup ]; then - mv -f $conf_file $conf_file_backup +logger -t xcat "Install: Setup NTP" +# if master is the sitemaster, then use the ntpservers defined in the site +# table, if they exist. If they don't exist, do not setup ntp +# else use the master which should be a service node +if [ "$master" == "$sitemaster" ]; then + + if [ $NTPSERVERS ]; then + if [ ! -f $conf_file_org ]; then + mv -f $conf_file $conf_file_org + else + mv -f $conf_file $conf_file_backup + fi + for i in $(echo $NTPSERVERS | tr ',' ' ') + do + echo "server $i" >>$conf_file + master=$i + done + else + exit 0 + + fi +else + if [ ! -f $conf_file_org ]; then + mv -f $conf_file $conf_file_org + else + mv -f $conf_file $conf_file_backup + fi + echo "server $master" >$conf_file + fi -logger -t xcat "Install: Setup NTP" -echo "server $master" >$conf_file - -mkdir -p /etc/ntp -chown ntp /etc/ntp +mkdir -p /var/lib/ntp +chown ntp /var/lib/ntp echo "driftfile /var/lib/ntp/drift restrict 127.0.0.1 authenticate no" >>$conf_file +#service ntpd restart service ntpd stop -ntpdate $master +logger -t xcat "ntpdate -t5 $master " +ntpdate -t5 $master +if [ "$?" != "0" ] + then + echo_failure + echo + echo " ntpdate -t5 $master failed" + exit $? +fi + service ntpd start +exit $?