Merge branch 'master' of ssh://git.code.sf.net/p/xcat/xcat-core
This commit is contained in:
commit
da02c2bce7
@ -4,9 +4,9 @@ B<pasu> - run the ASU to many nodes in parallel
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
B<pasu> [B<-V>] [B<-d>] [B<-n>] [B<-l> I<user>] [B<-p> I<passwd>] [B<-f> I<fanout>] I<noderange> I<command>
|
||||
B<pasu> [B<-V>] [B<-d>] [B<-n>] [B<-l> I<user>] [B<-p> I<passwd>] [B<-f> I<fanout>] [B<-i> I<hostname-suffix>] I<noderange> I<command>
|
||||
|
||||
B<pasu> [B<-V>] [B<-d>] [B<-n>] [B<-l> I<user>] [B<-p> I<passwd>] [B<-f> I<fanout>] B<-b> I<batchfile> I<noderange>
|
||||
B<pasu> [B<-V>] [B<-d>] [B<-n>] [B<-l> I<user>] [B<-p> I<passwd>] [B<-f> I<fanout>] [B<-i> I<hostname-suffix>] B<-b> I<batchfile> I<noderange>
|
||||
|
||||
B<pasu> [B<-h> | B<--help>]
|
||||
|
||||
@ -60,6 +60,10 @@ By default, pasu filters out (i.e. does not display) the standard initial output
|
||||
|
||||
If you want this output to be displayed, use this flag.
|
||||
|
||||
=item B<-i|--interface> I<hostname-suffix>
|
||||
|
||||
The hostname suffix to be appended to the node names.
|
||||
|
||||
=item B<-V|--verbose>
|
||||
|
||||
Display verbose messages.
|
||||
|
@ -840,8 +840,11 @@ sub mkinstall
|
||||
errorcode => [1]});
|
||||
next;
|
||||
}
|
||||
$kcmdline .= " console=tty0 console=ttyS"
|
||||
. $sent->{serialport} . "," . $sent->{serialspeed};
|
||||
if ( $arch =~ /ppc64/i ) {
|
||||
$kcmdline .= " console=tty0 console=hvc".$sent->{serialport} . "," . $sent->{serialspeed};
|
||||
} else {
|
||||
$kcmdline .= " console=tty0 console=ttyS".$sent->{serialport} . "," . $sent->{serialspeed};
|
||||
}
|
||||
if ($sent->{serialflow} =~ /(hard|cts|ctsrts)/){
|
||||
$kcmdline .= "n8r";
|
||||
}
|
||||
@ -1493,8 +1496,13 @@ sub mknetboot
|
||||
);
|
||||
next;
|
||||
}
|
||||
$kcmdline .=
|
||||
if ( $arch =~ /ppc64/i ) {
|
||||
$kcmdline .=
|
||||
"console=tty0 console=hvc" . $sent->{serialport} . "," . $sent->{serialspeed};
|
||||
} else {
|
||||
$kcmdline .=
|
||||
"console=tty0 console=ttyS" . $sent->{serialport} . "," . $sent->{serialspeed};
|
||||
}
|
||||
if ($sent->{serialflow} =~ /(hard|tcs|ctsrts)/)
|
||||
{
|
||||
$kcmdline .= "n8r";
|
||||
|
@ -479,12 +479,24 @@ if ($::INITIALINSTALL || $::FORCE)
|
||||
if ($rc == 0)
|
||||
{
|
||||
xCAT::MsgUtils->message('W', "SELINUX is not disabled, disabling it now...");
|
||||
# Disable selinux for running system
|
||||
my $cmd = "echo 0 > /selinux/enforce";
|
||||
my $outref = xCAT::Utils->runcmd("$cmd", 0);
|
||||
if ($::RUNCMD_RC != 0)
|
||||
# set selinux be in permissive mode for running system,
|
||||
# if the user forgot to disable selinux,
|
||||
# try to not hurt xcat too much
|
||||
my $enforcefile;
|
||||
if ( -f "/selinux/enforce")
|
||||
{
|
||||
xCAT::MsgUtils->message('E', "Failed to disable SELINUX.");
|
||||
$enforcefile = "/selinux/enforce";
|
||||
} elsif ( -f "/sys/fs/selinux/enforce" ) {
|
||||
$enforcefile = "/sys/fs/selinux/enforce";
|
||||
}
|
||||
if ($enforcefile)
|
||||
{
|
||||
my $cmd = "echo 0 > $enforcefile";
|
||||
my $outref = xCAT::Utils->runcmd("$cmd", 0);
|
||||
if ($::RUNCMD_RC != 0)
|
||||
{
|
||||
xCAT::MsgUtils->message('E', "Failed to disable SELINUX.");
|
||||
}
|
||||
}
|
||||
# Disable selinux through reboots
|
||||
my $cmd = "sed -i 's/^SELINUX=.*\$/SELINUX=disabled/' /etc/selinux/config";
|
||||
|
@ -185,6 +185,7 @@ echo "$TMP" > /xcatpost/mypostscript
|
||||
export NODE=#TABLE:nodelist:THISNODE:node#
|
||||
export OSVER=#TABLE:nodetype:THISNODE:os#
|
||||
export ARCH=#TABLE:nodetype:THISNODE:arch#
|
||||
export CONSOLEPORT=#TABLE:nodehm:THISNODE:serialport#
|
||||
#addsiteyum
|
||||
if [[ -r /boot/grub/menu.lst ]]; then
|
||||
sed -i 's/^serial/#serial/' /boot/grub/menu.lst
|
||||
@ -192,6 +193,33 @@ sed -i 's/^terminal/#terminal/' /boot/grub/menu.lst
|
||||
elif [[ -r /boot/grub/grub.cfg ]] ; then
|
||||
update-grub
|
||||
fi
|
||||
if echo "$ARCH" | grep -i 'ppc64'; then
|
||||
CONSOLE="hvc$CONSOLEPORT"
|
||||
if [[ -r /etc/default/grub ]] ; then
|
||||
sed -i "s/GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT=\"console=$CONSOLE\"/" /etc/default/grub
|
||||
else
|
||||
echo "GRUB_CMDLINE_LINUX_DEFAULT=\"console=$CONSOLE\"" > /etc/default/grub
|
||||
fi
|
||||
update-grub
|
||||
|
||||
cat >/etc/init/$CONSOLE\.conf << 'EOF'
|
||||
start on stopped rc RUNLEVEL=[2345] and (not-container or container container CONTAINER=lxc or container CONTAINER=lxc-libvirt)
|
||||
stop on runlevel [!2345]
|
||||
respawn
|
||||
script
|
||||
for i in `cat /proc/cmdline`; do
|
||||
KEY=`echo $i|cut -d= -f 1`
|
||||
if [ "$KEY" == "console" -a "$i" != "console=tty0" ]; then
|
||||
VALUE=`echo $i | cut -d= -f 2`
|
||||
COTTY=`echo $VALUE|cut -d, -f 1`
|
||||
COSPEED=`echo $VALUE|cut -d, -f 2|cut -dn -f 1`
|
||||
exec /sbin/getty -L $COSPEED $COTTY vt102
|
||||
break
|
||||
fi
|
||||
done
|
||||
end script
|
||||
EOF
|
||||
fi
|
||||
sed -i 's/\(deb.*security.*\)/#\1/' /etc/apt/sources.list
|
||||
#iso does not contains source deb packages
|
||||
sed -i 's/^\(\s*deb-src.*install.*\)$/#\1/g' /etc/apt/sources.list
|
||||
|
@ -41,4 +41,19 @@ END
|
||||
#for ext in pkglist exlist postinstall repolist; do
|
||||
# [ -r $workdir/$profile.$ext ] && cat $workdir/$profile.$ext | grep -E '^[[:space:]]*#.*[[:space:]]\$Id' >> $installroot/etc/IMGVERSION
|
||||
#done
|
||||
|
||||
if echo "$arch" | grep -i 'ppc64'; then
|
||||
CONSOLE="hvc0"
|
||||
for i in `cat /proc/cmdline`; do
|
||||
KEY=`echo $i|cut -d= -f 1`
|
||||
if [ "$KEY" == "console" -a "$i" != "console=tty0" ]; then
|
||||
CONSOLEPARAM=$i
|
||||
CONSOLE=`echo $i | cut -d= -f 2 | cut -d, -f 1`
|
||||
fi
|
||||
done
|
||||
if [[ -r $installroot/etc/default/grub ]]; then
|
||||
sed -i "s/GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT=\"console=$CONSOLE\"/" $installroot/etc/default/grub
|
||||
else
|
||||
echo "GRUB_CMDLINE_LINUX_DEFAULT=\"console=$CONSOLE\"" > $installroot/etc/default/grub
|
||||
fi
|
||||
#update-grub
|
||||
fi
|
@ -982,6 +982,14 @@ EOS1
|
||||
print $inifile "mknod /dev/ttyS1 c 4 65\n";
|
||||
print $inifile "mknod /dev/ttyS2 c 4 66\n";
|
||||
print $inifile "mknod /dev/ttyS3 c 4 67\n";
|
||||
print $inifile "mknod /dev/hvc0 c 229 0\n";
|
||||
print $inifile "mknod /dev/hvc1 c 229 1\n";
|
||||
print $inifile "mknod /dev/hvc2 c 229 2\n";
|
||||
print $inifile "mknod /dev/hvc3 c 229 3\n";
|
||||
print $inifile "mknod /dev/hvc4 c 229 4\n";
|
||||
print $inifile "mknod /dev/hvc5 c 229 5\n";
|
||||
print $inifile "mknod /dev/hvc6 c 229 6\n";
|
||||
print $inifile "mknod /dev/hvc7 c 229 7\n";
|
||||
|
||||
foreach (@ndrivers) {
|
||||
print $inifile "insmod /lib/$_\n";
|
||||
|
@ -211,7 +211,7 @@ if [ -z "$UPDATENODE" ] || [ $UPDATENODE -ne 1 ]; then
|
||||
"$NODESETSTATE" = "diskless" -o \
|
||||
"$NODESETSTATE" = "dataless" ]
|
||||
then
|
||||
echo " Did not install any extra rpms."
|
||||
echo " Did not install any extra packages."
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
@ -1,472 +0,0 @@
|
||||
#!/bin/bash
|
||||
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
#=head1 otherpkgs
|
||||
#=head2 It gets the extra rpms and install/update them.
|
||||
# The environment variable OTHERPKGS contains the rpms to be installed/updated.
|
||||
# On MN, You need to:
|
||||
# 1. put rpms under /install/post/otherpkgs/os/arch directory where 'os' and 'arch'
|
||||
# can be found in the nodetype table.
|
||||
# 2. put the name of the packages to /opt/xcat/share/xcat/netboot(install)/platform
|
||||
# directory. The file name is one of the following:
|
||||
# profile.os.arch.otherpkgs.pkglist
|
||||
# profile.os.otherpkgs.pkglist
|
||||
# profile.arch.otherpkgs.pkglist
|
||||
# profile.otherpkgs.pkglist
|
||||
# The install/deployment process will pick up the rpms and install them on the nodes.
|
||||
# However, if the nodes have already installed and up and running, you can run the following
|
||||
# command to have the extra rpms installed:
|
||||
# updatenode noderange otherpkgs
|
||||
#
|
||||
#=cut
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
|
||||
# do nothing for diskless deployment case because it is done in the image already
|
||||
if [[ $UPDATENODE -ne 1 ]]; then
|
||||
if [ "$NODESETSTATE" = "netboot" -o \
|
||||
"$NODESETSTATE" = "statelite" -o \
|
||||
"$NODESETSTATE" = "diskless" -o \
|
||||
"$NODESETSTATE" = "dataless" ]
|
||||
then
|
||||
echo " Did not install any extra rpms."
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -z "$OTHERPKGS_INDEX" ]]; then
|
||||
echo "$0: no extra rpms to install"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [[ -z "$NFSSERVER" ]]; then
|
||||
NFSSERVER=$MASTER
|
||||
fi
|
||||
|
||||
if [[ -z "$INSTALLDIR" ]]; then
|
||||
INSTALLDIR="/install"
|
||||
fi
|
||||
|
||||
#check if /install is mounted on the server, we may need to add code to conver NFSSERVER to ip
|
||||
mounted=0;
|
||||
result=`mount |grep /install |grep $NFSSERVER`
|
||||
if [ $? -eq 0 ]; then
|
||||
NFSSERVER="/install"
|
||||
mounted=1
|
||||
fi
|
||||
|
||||
if [[ -z "$OTHERPKGDIR" ]]; then
|
||||
OTHERPKGDIR="$NFSSERVER/post/otherpkgs/$OSVER/$ARCH"
|
||||
fi
|
||||
|
||||
if [ $mounted -eq 0 ]; then
|
||||
OTHERPKGDIR=${OTHERPKGDIR/#$INSTALLDIR/$NFSSERVER/}
|
||||
fi
|
||||
|
||||
echo NFSSERVER=$NFSSERVER
|
||||
logger -t xcat -p local4.info "NFSSERVER=$NFSSERVER"
|
||||
echo OTHERPKGDIR=$OTHERPKGDIR
|
||||
logger -t xcat -p local4.info "OTHERPKGDIR=$OTHERPKGDIR"
|
||||
|
||||
#if [ -x "/sbin/dhcpcd" ]; then
|
||||
# dhcpcd -n $PRIMARYNIC
|
||||
#fi
|
||||
|
||||
#check if the node has yum or zypper installed, it will try yum first, then zypper and last rpm
|
||||
# for rpm based machines, or check if apt is installed, then it will use apt then dpkg
|
||||
|
||||
RETURNVAL=0
|
||||
hasrpm=0
|
||||
hasyum=0
|
||||
haszypper=0
|
||||
hasapt=0
|
||||
hasdpkg=0
|
||||
scommand="rpm"
|
||||
sinstallcommad="$scommand -ivh"
|
||||
supdatecommad="$scommand -Uvh --replacepkgs"
|
||||
sremovecommad="$scommand -ev"
|
||||
|
||||
result=`which rpm`
|
||||
if [ $? -eq 0 ]; then
|
||||
hasrpm=1
|
||||
result=`rpm -q yum`
|
||||
if [ $? -eq 0 ]; then
|
||||
hasyum=1
|
||||
else
|
||||
result=`rpm -q zypper`
|
||||
if [ "$?" = "0" ]; then
|
||||
haszypper=1
|
||||
fi
|
||||
fi
|
||||
else
|
||||
result=`which dpkg`
|
||||
if [ $? -eq 0 ]; then
|
||||
hasdpkg=1
|
||||
scommand="dpkg"
|
||||
sinstallcommand="$scommand -i"
|
||||
supdatecommand="$sinstallcommand"
|
||||
sremovecommand="$scommand -r"
|
||||
result=`dpkg -l apt`
|
||||
if [ $? -eq 0 ]; then
|
||||
hasapt=1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
# To support the #NEW_INSTALL_LIST# entry in otherpkgs.pkglist files,
|
||||
# multiple lists of packages are provided to this script in the form:
|
||||
# OTHERPKGS1, OTHERPKGS2, ... OTHERPKSn where n=OTHERPKGS_INDEX
|
||||
# Each sublist will be installed in a separate call (separate pass
|
||||
# through this loop)
|
||||
op_index=1
|
||||
#echo "OTHERPKGS_INDEX = $OTHERPKGS_INDEX"
|
||||
while [ $op_index -le $OTHERPKGS_INDEX ]; do
|
||||
eval pkglist=\$OTHERPKGS$op_index
|
||||
#echo "pkglist = $pkglist"
|
||||
if [ $hasyum -eq 1 ]; then
|
||||
mkdir -p /etc/yum.repos.d
|
||||
result=`rm /etc/yum.repos.d/xCAT-otherpkgs*.repo 2>&1`
|
||||
result=`yum clean all`
|
||||
repo_base="/etc/yum.repos.d"
|
||||
elif [ $haszypper -eq 1 ]; then
|
||||
#remove old repo
|
||||
old_repo=`zypper sl |grep xcat-otherpkgs | cut -f2 -d '|'`
|
||||
for x in $old_repo
|
||||
do
|
||||
result=`zypper sd $x`
|
||||
done
|
||||
zypper --non-interactive refresh
|
||||
repo_base="/tmp"
|
||||
elif [ $hasapt -eq 1 ] ; then
|
||||
mkdir -p /etc/apt/sources.list.d
|
||||
result=`rm /etc/apt/sources.list.d/xCAT-otherpkgs*.list 2>&1`
|
||||
result=`apt-get -y update`
|
||||
repo_base="/etc/apt/sources.list.d"
|
||||
fi
|
||||
|
||||
repo_path=()
|
||||
repo_pkgs=""
|
||||
repo_pkgs_preremove=""
|
||||
repo_pkgs_postremove=""
|
||||
plain_pkgs=""
|
||||
plain_pkgs_preremove=""
|
||||
plain_pkgs_postremove=""
|
||||
handled_path=()
|
||||
for x in `echo "$pkglist" | tr "," "\n"`
|
||||
do
|
||||
#check if the file name starts with -- or -.
|
||||
#If it is start with -, then the rpm must be removed before installing other packages
|
||||
#If it is start with --, then the rpm will be removed after installing other packages
|
||||
string_type=0; #nornmal rpm
|
||||
pos=`expr index $x -`
|
||||
if [ $pos -eq 1 ]; then
|
||||
x=`echo ${x#-}`
|
||||
pos=`expr index $x -`
|
||||
if [ $pos -eq 1 ]; then
|
||||
x=`echo ${x#-}`
|
||||
string_type=1 #start with --
|
||||
else
|
||||
string_type=-1 #start with -
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $hasyum -eq 0 ] && [ $haszypper -eq 0 ] && [ $hasapt -eq 0 ]; then
|
||||
if [ $string_type -eq -1 ]; then
|
||||
plain_pkgs_preremove="$plain_pkgs_preremove $x"
|
||||
elif [ $string_type -eq 1 ]; then
|
||||
plain_pkgs_postremove="$plain_pkgs_postremove $x"
|
||||
else
|
||||
plain_pkgs="$plain_pkgs $x*"
|
||||
fi
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ $string_type -eq -1 ]; then
|
||||
repo_pkgs_preremove="$repo_pkgs_preremove $x"
|
||||
elif [ $string_type -eq 1 ]; then
|
||||
repo_pkgs_postremove="$repo_pkgs_postremove $x"
|
||||
else
|
||||
fn=`basename $x`
|
||||
path=`dirname $x`
|
||||
whole_path=$OTHERPKGDIR/$path
|
||||
#whole_path=$OTHERPKGDIR
|
||||
|
||||
#find out if this path has already handled
|
||||
try_repo=1
|
||||
rc=1
|
||||
i=0
|
||||
while [ $i -lt ${#handled_path[*]} ]; do
|
||||
if [ ${handled_path[$i]} = $path ]; then
|
||||
try_repo=0
|
||||
j=0
|
||||
while [ $j -lt ${#repo_path[*]} ]; do
|
||||
if [ ${repo_path[$j]} = $path ]; then
|
||||
rc=0
|
||||
break
|
||||
fi
|
||||
let j++
|
||||
done
|
||||
break
|
||||
fi
|
||||
let i++
|
||||
done
|
||||
|
||||
|
||||
#try to add the path to the repo
|
||||
if [ $try_repo -eq 1 ]; then
|
||||
index=${#repo_path[*]}
|
||||
if [ $hasyum -eq 1 ] || [ $haszypper -eq 1 ] ; then
|
||||
REPOFILE="$repo_base/xCAT-otherpkgs$index.repo"
|
||||
echo "[xcat-otherpkgs$index]" > $REPOFILE
|
||||
echo "name=xcat-otherpkgs$index" >> $REPOFILE
|
||||
if [ $mounted -eq 0 ]; then
|
||||
echo "baseurl=ftp://$whole_path" >> $REPOFILE
|
||||
else
|
||||
echo "baseurl=file://$whole_path" >> $REPOFILE
|
||||
fi
|
||||
echo "enabled=1" >> $REPOFILE
|
||||
echo "gpgcheck=0" >> $REPOFILE
|
||||
elif [ $hasapt -eq 1 ] ; then
|
||||
REPOFILE="$repo_base/xCAT-otherpkgs$index.list"
|
||||
|
||||
if [ $mounted -eq 0 ]; then
|
||||
type=ftp
|
||||
else
|
||||
type=file
|
||||
fi
|
||||
|
||||
echo "deb $type://$whole_path /" >> $REPOFILE
|
||||
fi
|
||||
|
||||
if [ $hasyum -eq 1 ]; then
|
||||
#use yum
|
||||
result=`yum list $fn 2>&1`
|
||||
if [ $? -eq 0 ]; then
|
||||
rc=0
|
||||
repo_path[${#repo_path[*]}]=$path
|
||||
else
|
||||
rm $REPOFILE
|
||||
fi
|
||||
elif [ $haszypper -eq 1 ]; then
|
||||
#use zypper
|
||||
if [[ "$OSVER" = sles11* ]]; then
|
||||
result=`zypper ar -c $REPOFILE`
|
||||
else
|
||||
result=`zypper sa -c $REPOFILE`
|
||||
fi
|
||||
|
||||
result=`zypper --non-interactive refresh xcat-otherpkgs$index 2>&1`
|
||||
if [ $? -eq 0 ]; then
|
||||
rc=0
|
||||
repo_path[${#repo_path[*]}]=$path
|
||||
else
|
||||
result=`zypper sd xcat-otherpkgs$index`
|
||||
fi
|
||||
elif [ $hasapt -eq 1 ]; then
|
||||
#use apt
|
||||
result=`apt-cache search $fn 2>&1`
|
||||
if [ $? -eq 0 ]; then
|
||||
rc=0
|
||||
repo_path[${#repo_path[*]}]=$path
|
||||
else
|
||||
rm $REPOFILE
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
if [ $rc -eq 0 ]; then
|
||||
repo_pkgs="$repo_pkgs $fn"
|
||||
else
|
||||
#now no hope we have to use rpm command
|
||||
plain_pkgs="$plain_pkgs $x*"
|
||||
fi
|
||||
handled_path[${#handled_path[*]}]=$path
|
||||
fi
|
||||
done
|
||||
|
||||
#now update all the existing rpms
|
||||
if [ $hasyum -eq 1 ]; then
|
||||
echo "yum -y upgrade"
|
||||
result=`yum -y upgrade 2>&1`
|
||||
logger -t xcat -p local4.info "$result"
|
||||
if [ $? -ne 0 ]; then
|
||||
logger -t xcat -p local4.info "otherpkgs: $result"
|
||||
fi
|
||||
echo "$result"
|
||||
elif [ $haszypper -eq 1 ]; then
|
||||
echo "zypper --non-interactive update --auto-agree-with-license"
|
||||
result=`zypper --non-interactive update --auto-agree-with-license 2>&1`
|
||||
logger -t xcat -p local4.info "$result"
|
||||
if [ $? -ne 0 ]; then
|
||||
logger -t xcat -p local4.info "otherpkgs: $result"
|
||||
fi
|
||||
echo "$result"
|
||||
fi
|
||||
|
||||
#echo "repo_pkgs=$repo_pkgs,\nrepo_pkgs_preremove=$repo_pkgs_preremove,\nrepo_pkgs_postremove=$repo_pkgs_postremove"
|
||||
#echo "plain_pkgs=$plain_pkgs,\nplain_pkgs_preremove=$plain_pkgs_preremove,\nplain_pkgs_postremove=$plain_pkgs_postremove"
|
||||
|
||||
|
||||
#Now we have parsed the input, let's remove rpms if is specified with -
|
||||
if [ "$repo_pkgs_preremove" != "" ]; then
|
||||
if [ $hasyum -eq 1 ]; then
|
||||
echo "yum -y remove $repo_pkgs_preremove"
|
||||
result=`yum -y remove $repo_pkgs_preremove 2>&1`
|
||||
R=$?
|
||||
if [ $R -ne 0 ]; then
|
||||
RETURNVAL=$R
|
||||
fi
|
||||
logger -t xcat -p local4.info "otherpkgs: $result"
|
||||
echo "$result"
|
||||
elif [ $haszypper -eq 1 ]; then
|
||||
echo "zypper remove -y $repo_pkgs_preremove"
|
||||
result=`zypper remove -y $repo_pkgs_preremove 2>&1`
|
||||
R=$?
|
||||
if [ $R -ne 0 ]; then
|
||||
RETURNVAL=$R
|
||||
fi
|
||||
logger -t xcat -p local4.info "otherpkgs: $result"
|
||||
echo "$result"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$plain_pkgs_preremove" != "" ]; then
|
||||
echo "$sremovecommand $plain_pkgs_preremove"
|
||||
result=`$sremovecommand $plain_pkgs_preremove 2>&1`
|
||||
R=$?
|
||||
if [ $R -ne 0 ]; then
|
||||
RETURNVAL=$R
|
||||
fi
|
||||
logger -t xcat -p local4.info "otherpkgs $result"
|
||||
echo "$result"
|
||||
fi
|
||||
|
||||
|
||||
#installation using yum or zypper
|
||||
if [ "$repo_pkgs" != "" ]; then
|
||||
if [ $hasyum -eq 1 ]; then
|
||||
echo "yum -y install $repo_pkgs"
|
||||
result=`yum -y install $repo_pkgs 2>&1`
|
||||
R=$?
|
||||
if [ $R -ne 0 ]; then
|
||||
RETURNVAL=$R
|
||||
fi
|
||||
logger -t xcat -p local4.info "otherpkgs: $result"
|
||||
echo "$result"
|
||||
elif [ $haszypper -eq 1 ]; then
|
||||
echo "zypper install -y $repo_pkgs"
|
||||
result=`zypper install -y $repo_pkgs 2>&1`
|
||||
R=$?
|
||||
if [ $R -ne 0 ]; then
|
||||
RETURNVAL=$R
|
||||
fi
|
||||
logger -t xcat -p local4.info "otherpkgs: $result"
|
||||
echo "$result"
|
||||
#remove the repos
|
||||
#old_repo=`zypper lr -u |grep xcat-otherpkgs | cut -f2 -d '|'`
|
||||
#for x in $old_repo
|
||||
#do
|
||||
# result=`zypper sd $x`
|
||||
#done
|
||||
elif [ $hasapt -eq 1 ]; then
|
||||
echo "apt-get -q -y --force-yes install $repo_pkgs"
|
||||
result=`apt-get -q -y --force-yes install $repo_pkgs 2>&1`
|
||||
R=$?
|
||||
if [ $R -ne 0 ]; then
|
||||
RETURNVAL=$R
|
||||
fi
|
||||
logger -t xcat -p local4.info "otherpkgs: $result"
|
||||
echo "$result"
|
||||
fi
|
||||
fi
|
||||
|
||||
#Handle the rest with rpm
|
||||
if [ "$plain_pkgs" != "" ]; then
|
||||
if [ $mounted -eq 0 ]; then
|
||||
dir_no_ftproot=${OTHERPKGDIR#$INSTALLDIR/}
|
||||
mkdir -p /xcatpost/$dir_no_ftproot
|
||||
rm -f -R /xcatpost/$dir_no_ftproot/*
|
||||
mkdir -p /tmp/postage/
|
||||
rm -f -R /tmp/postage/*
|
||||
cd /tmp/postage
|
||||
|
||||
for x in `echo "$plain_pkgs" | tr " " "\n"`
|
||||
do
|
||||
wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 0 -T 60 ftp://$OTHERPKGDIR/$x 2> /tmp/wget.log
|
||||
done
|
||||
|
||||
mv $dir_no_ftproot/* /xcatpost/$dir_no_ftproot;
|
||||
rm -rf $NFSSERVER
|
||||
cd /xcatpost/$dir_no_ftproot
|
||||
else
|
||||
cd $OTHERPKGDIR
|
||||
fi
|
||||
|
||||
echo "$supdatecommand --replacepkgs $plain_pkgs"
|
||||
result=`$supdatecommand --replacepkgs $plain_pkgs 2>&1`
|
||||
logger -t xcat -p local4.info "$result"
|
||||
if [ $? -ne 0 ]; then
|
||||
logger -t xcat -p local4.info "otherpkgs $result"
|
||||
fi
|
||||
echo "$result"
|
||||
|
||||
if [ $mounted -eq 0 ]; then
|
||||
cd /xcatpost
|
||||
dir_no_ftproot=${OTHERPKGDIR#$INSTALLDIR/}
|
||||
dir_no_ftproot=${dir_no_ftproot/\/*/}
|
||||
rm -f -R $dir_no_ftproot
|
||||
fi
|
||||
fi
|
||||
|
||||
#remove more rpms if specified with --
|
||||
if [ "$repo_pkgs_postremove" != "" ]; then
|
||||
if [ $hasyum -eq 1 ]; then
|
||||
echo "yum -y remove $repo_pkgs_postremove"
|
||||
result=`yum -y remove $repo_pkgs_postremove 2>&1`
|
||||
R=$?
|
||||
if [ $R -ne 0 ]; then
|
||||
RETURNVAL=$R
|
||||
fi
|
||||
logger -t xcat -p local4.info "otherpkgs: $result"
|
||||
echo "$result"
|
||||
elif [ $haszypper -eq 1 ]; then
|
||||
echo "zypper remove -y $repo_pkgs_postremove"
|
||||
result=`zypper remove -y $repo_pkgs_postremove 2>&1`
|
||||
R=$?
|
||||
if [ $R -ne 0 ]; then
|
||||
RETURNVAL=$R
|
||||
fi
|
||||
logger -t xcat -p local4.info "otherpkgs: $result"
|
||||
echo "$result"
|
||||
elif [ $hasapt -eq 1 ]; then
|
||||
echo "apt-get -y remove $repo_pkgs_postremove"
|
||||
result=`apt-get -y remove $repo_pkgs_postremove 2>&1`
|
||||
R=$?
|
||||
if [ $R -ne 0 ]; then
|
||||
RETURNVAL=$R
|
||||
fi
|
||||
logger -t xcat -p local4.info "otherpkgs: $result"
|
||||
echo "$result"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$plain_pkgs_postremove" != "" ]; then
|
||||
echo "$sremovecommand $plain_pkgs_postremove"
|
||||
result=`$sremovecommand $plain_pkgs_postremove 2>&1`
|
||||
R=$?
|
||||
if [ $R -ne 0 ]; then
|
||||
RETURNVAL=$R
|
||||
fi
|
||||
logger -t xcat -p local4.info "otherpkgs $result"
|
||||
echo "$result"
|
||||
fi
|
||||
|
||||
let op_index=$op_index+1
|
||||
done
|
||||
|
||||
exit $RETURNVAL
|
||||
|
@ -6,7 +6,7 @@
|
||||
#=head2 routeop is called by makeroutes command and setuproutes postscript to
|
||||
# setup a route on a node.
|
||||
# The syntax is:
|
||||
# routeop add/delete net mask gateway ifnamea #NOTE: the add/delete will be
|
||||
# routeop add/delete net mask gateway ifname #NOTE: the add/delete will be
|
||||
# obsoleted, using 'replace' is recommended.
|
||||
# routeop replace net mask gateway ifname #NOTE: it only works for sles so far
|
||||
# net - IP of net like 192.168.1.0. The keyword
|
||||
@ -204,12 +204,6 @@ replace_persistent_route()
|
||||
OS_name="debian"
|
||||
fi
|
||||
|
||||
# The replace operation does not support debain so far
|
||||
if [ "$OS_name" != "redhat" ] && [ "$OS_name" != "sles" ]; then
|
||||
echo "Warning: replace operation only supports to add persistent route for sles and redhat by now."
|
||||
return
|
||||
fi
|
||||
|
||||
# set the destination of the route for searching in the route configuration file
|
||||
if [ "$net" = "default" ]; then
|
||||
routedest="default"
|
||||
@ -221,105 +215,106 @@ replace_persistent_route()
|
||||
|
||||
case $OS_name in
|
||||
sles)
|
||||
filename="/etc/sysconfig/network/routes";
|
||||
if echo $net | grep : 2>&1 1>/dev/null
|
||||
then
|
||||
# for ipv6
|
||||
if [ "$gw" = "" -o "$gw" = "::" ] ; then
|
||||
route="$net/$mask :: - $ifname"
|
||||
route1="$net\/$mask :: - $ifname";
|
||||
else
|
||||
route="$net/$mask $gw - -"
|
||||
route1="$net\/$mask $gw - -";
|
||||
fi
|
||||
else
|
||||
# for ipv4
|
||||
if [ "$gw" = "" -o "$gw" = "0.0.0.0" ] ; then
|
||||
if [ "$net" = "default" ]; then
|
||||
route="default - - $ifname";
|
||||
route1="default - - $ifname";
|
||||
filename="/etc/sysconfig/network/routes";
|
||||
if echo $net | grep : 2>&1 1>/dev/null
|
||||
then
|
||||
# for ipv6
|
||||
if [ "$gw" = "" -o "$gw" = "::" ] ; then
|
||||
route="$net/$mask :: - $ifname"
|
||||
route1="$net\/$mask :: - $ifname";
|
||||
else
|
||||
route="$net/$mask - - $ifname";
|
||||
route1="$net\/$mask - - $ifname";
|
||||
route="$net/$mask $gw - -"
|
||||
route1="$net\/$mask $gw - -";
|
||||
fi
|
||||
else
|
||||
if [ "$net" = "default" ]; then
|
||||
route="default $gw - $ifname";
|
||||
route1="default $gw - $ifname";
|
||||
# for ipv4
|
||||
if [ "$gw" = "" -o "$gw" = "0.0.0.0" ] ; then
|
||||
if [ "$net" = "default" ]; then
|
||||
route="default - - $ifname";
|
||||
route1="default - - $ifname";
|
||||
else
|
||||
route="$net/$mask - - $ifname";
|
||||
route1="$net\/$mask - - $ifname";
|
||||
fi
|
||||
else
|
||||
route="$net/$mask $gw - $ifname";
|
||||
route1="$net\/$mask $gw - $ifname";
|
||||
if [ "$net" = "default" ]; then
|
||||
route="default $gw - $ifname";
|
||||
route1="default $gw - $ifname";
|
||||
else
|
||||
route="$net/$mask $gw - $ifname";
|
||||
route1="$net\/$mask $gw - $ifname";
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if [ -f $filename ]; then
|
||||
egrep "^$routedest" $filename 2>&1 1>/dev/null
|
||||
if [ $? -ne 0 ]; then #route does not exist
|
||||
echo $route >> $filename
|
||||
if [ -f $filename ]; then
|
||||
egrep "^$routedest" $filename 2>&1 1>/dev/null
|
||||
if [ $? -ne 0 ]; then #route does not exist
|
||||
echo $route >> $filename
|
||||
echo "Persistent route \"$route\" has been added in $filename."
|
||||
else
|
||||
# replace it
|
||||
sed -i -e "s/$routedest1.*/$route1/g" $filename
|
||||
echo "Persistent route \"$route\" has been replaced in $filename."
|
||||
fi
|
||||
else
|
||||
echo "$route" > $filename
|
||||
echo "Persistent route \"$route\" has been added in $filename."
|
||||
else
|
||||
# replace it
|
||||
sed -i -e "s/$routedest1.*/$route1/g" $filename
|
||||
echo "Persistent route \"$route\" has been replaced in $filename."
|
||||
fi
|
||||
else
|
||||
echo "$route" > $filename
|
||||
echo "Persistent route \"$route\" has been added in $filename."
|
||||
fi
|
||||
;;
|
||||
|
||||
redhat)
|
||||
#echo "rh/fedora/centos"
|
||||
if [ -z "$ifname" ]; then
|
||||
echo "Error: the device name is necessary to configure static route."
|
||||
return
|
||||
fi
|
||||
|
||||
if echo $net | grep : 2>&1 1>/dev/null
|
||||
then
|
||||
# ipv6
|
||||
filename="/etc/sysconfig/network-scripts/route6-$ifname"
|
||||
if [ "$gw" = "" -o "$gw" = "::" ] ; then
|
||||
route="$net/$mask dev $ifname"
|
||||
route1="$net\/$mask dev $ifname"
|
||||
else
|
||||
route="$net/$mask via $gw"
|
||||
route1="$net\/$mask via $gw"
|
||||
#echo "rh/fedora/centos"
|
||||
if [ -z "$ifname" ]; then
|
||||
echo "Error: the device name is necessary to configure static route."
|
||||
return
|
||||
fi
|
||||
else
|
||||
# ipv4
|
||||
filename="/etc/sysconfig/network-scripts/route-$ifname"
|
||||
if [ "$gw" = "" -o "$gw" = "0.0.0.0" ] ; then
|
||||
route="$net/$mask dev $ifname"
|
||||
route1="$net\/$mask dev $ifname"
|
||||
|
||||
if echo $net | grep : 2>&1 1>/dev/null
|
||||
then
|
||||
# ipv6
|
||||
filename="/etc/sysconfig/network-scripts/route6-$ifname"
|
||||
if [ "$gw" = "" -o "$gw" = "::" ] ; then
|
||||
route="$net/$mask dev $ifname"
|
||||
route1="$net\/$mask dev $ifname"
|
||||
else
|
||||
route="$net/$mask via $gw"
|
||||
route1="$net\/$mask via $gw"
|
||||
fi
|
||||
else
|
||||
route="$net/$mask via $gw"
|
||||
route1="$net\/$mask via $gw"
|
||||
# ipv4
|
||||
filename="/etc/sysconfig/network-scripts/route-$ifname"
|
||||
if [ "$gw" = "" -o "$gw" = "0.0.0.0" ] ; then
|
||||
route="$net/$mask dev $ifname"
|
||||
route1="$net\/$mask dev $ifname"
|
||||
else
|
||||
route="$net/$mask via $gw"
|
||||
route1="$net\/$mask via $gw"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if [ -f $filename ]; then
|
||||
egrep "^$routedest" $filename 2>&1 1>/dev/null
|
||||
if [ $? -ne 0 ]; then #route does not exist
|
||||
echo $route >> $filename
|
||||
if [ -f $filename ]; then
|
||||
egrep "^$routedest" $filename 2>&1 1>/dev/null
|
||||
if [ $? -ne 0 ]; then #route does not exist
|
||||
echo $route >> $filename
|
||||
echo "Persistent route \"$route\" has been added in $filename."
|
||||
else
|
||||
# replace it
|
||||
sed -i -e "s/$routedest1.*/$route1/g" $filename
|
||||
echo "Persistent route \"$route\" has been replaced in $filename."
|
||||
fi
|
||||
else
|
||||
echo "$route" > $filename
|
||||
echo "Persistent route \"$route\" has been added in $filename."
|
||||
else
|
||||
# replace it
|
||||
sed -i -e "s/$routedest1.*/$route1/g" $filename
|
||||
echo "Persistent route \"$route\" has been replaced in $filename."
|
||||
fi
|
||||
else
|
||||
echo "$route" > $filename
|
||||
echo "Persistent route \"$route\" has been added in $filename."
|
||||
fi
|
||||
;;
|
||||
|
||||
debian)
|
||||
debianpreconf
|
||||
matchstr=""
|
||||
v6flag=0
|
||||
#on debian/ubuntu need the network device name
|
||||
if [ ! $ifname ];then
|
||||
ifname=`netstat -nr | grep "$net" | awk '{print $8}' | head -1`
|
||||
# on debian/ubuntu need the network device name
|
||||
if [ -z "$ifname" ]; then
|
||||
echo "Error: the device name is necessary to configure static route."
|
||||
return
|
||||
fi
|
||||
filename="/etc/network/interfaces.d/$ifname"
|
||||
|
||||
@ -327,83 +322,47 @@ replace_persistent_route()
|
||||
echo "auto $ifname" > $filename
|
||||
echo "iface $ifname inet dhcp" >> $filename
|
||||
fi
|
||||
echo $net | grep : 2>&1 1>/dev/null
|
||||
#ipv6
|
||||
if [ $? -eq 0 ];then
|
||||
if [ "$gw" = "" -o "$gw" = "::" ] ; then
|
||||
matchstr="$net/$mask dev $ifname"
|
||||
else
|
||||
matchstr="$net/$mask gw $gw"
|
||||
fi
|
||||
v6flag=1
|
||||
else
|
||||
if [ "$gw" = "" -o "$gw" = "0.0.0.0" ] ; then
|
||||
matchstr="net $net netmask $mask dev $ifname"
|
||||
else
|
||||
matchstr="net $net netmask $mask gw $gw"
|
||||
fi
|
||||
fi
|
||||
|
||||
grep "$matchstr" $filename 2>&1 1>/dev/null
|
||||
if [ $? -ne 0 ];then
|
||||
foundflag=0
|
||||
tempfile="/etc/network/interfaces.d/tmp"
|
||||
while read LINE
|
||||
do
|
||||
echo $LINE | grep "iface" 2>&1 1>/dev/null
|
||||
if [ $? -eq 0 -a $foundflag -eq 1 ];then
|
||||
foundflag=0
|
||||
if [ $v6flag -eq 1 ];then
|
||||
if [ "$gw" = "" -o "$gw" = "::" ] ; then
|
||||
echo " up route -A inet6 add $net/$mask dev $ifname" >> $tempfile
|
||||
echo " down route -A inet6 del $net/$mask dev $ifname" >> $tempfile
|
||||
else
|
||||
echo " up route -A inet6 add $net/$mask gw $gw" >> $tempfile
|
||||
echo " down route -A inet6 del $net/$mask gw $gw" >> $tempfile
|
||||
fi
|
||||
else
|
||||
if [ "$gw" = "" -o "$gw" = "0.0.0.0" ] ; then
|
||||
echo " up route add -net $net netmask $mask dev $ifname" >> $tempfile
|
||||
echo " down route del -net $net netmask $mask dev $ifname" >> $tempfile
|
||||
else
|
||||
echo " up route add -net $net netmask $mask gw $gw" >> $tempfile
|
||||
echo " down route del -net $net netmask $mask gw $gw" >> $tempfile
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
echo $LINE | grep "iface $ifname " 2>&1 1>/dev/null
|
||||
#this is the last line of the device
|
||||
if [ $? -eq 0 ];then
|
||||
foundflag=1
|
||||
fi
|
||||
# if the route entry for a target net has been added in the if cfg file, just replace it
|
||||
cmd="post-up $cmd"
|
||||
#cmd1=${cmd//\//\\\/}
|
||||
#sed -i -e "s/.*$routedest1.*/$cmd1/g" $filename
|
||||
|
||||
echo $LINE >> $tempfile
|
||||
done < $filename
|
||||
#the insert place is the last line of the config file
|
||||
if [ $foundflag -eq 1 ];then
|
||||
if [ $v6flag -eq 1 ];then
|
||||
if [ "$gw" = "" -o "$gw" = "::" ] ; then
|
||||
echo " up route -A inet6 add $net/$mask dev $ifname" >> $tempfile
|
||||
echo " down route -A inet6 del $net/$mask dev $ifname" >> $tempfile
|
||||
else
|
||||
echo " up route -A inet6 add $net/$mask gw $gw" >> $tempfile
|
||||
echo " down route -A inet6 del $net/$mask gw $gw" >> $tempfile
|
||||
fi
|
||||
else
|
||||
if [ "$gw" = "" -o "$gw" = "0.0.0.0" ] ; then
|
||||
echo " up route add -net $net netmask $mask dev $ifname" >> $tempfile
|
||||
echo " down route del -net $net netmask $mask dev $ifname" >> $tempfile
|
||||
else
|
||||
echo " up route add -net $net netmask $mask gw $gw" >> $tempfile
|
||||
echo " down route del -net $net netmask $mask gw $gw" >> $tempfile
|
||||
fi
|
||||
fi
|
||||
# for the case to add a new cmd for certain interface
|
||||
foundflag=0
|
||||
setflag=0
|
||||
tempfile="/etc/network/interfaces.d/tmp"
|
||||
>$tempfile
|
||||
|
||||
while read LINE
|
||||
do
|
||||
# replace the existed setting
|
||||
echo $LINE | grep "$routedest1" 2>&1 1>/dev/null
|
||||
if [ $? -eq 0 -a $foundflag -eq 1 ];then
|
||||
LINE=$cmd
|
||||
setflag=1
|
||||
fi
|
||||
mv -f $tempfile $filename
|
||||
echo "Persistent route \"$matchstr\" added in $filename."
|
||||
else
|
||||
echo "Persisten route \"$match\" already exists in $filename"
|
||||
|
||||
echo $LINE | grep "iface" 2>&1 1>/dev/null
|
||||
if [ $? -eq 0 -a $foundflag -eq 1 -a $setflag -eq 0 ];then
|
||||
foundflag=0
|
||||
echo "$cmd" >> $tempfile
|
||||
fi
|
||||
echo $LINE | grep "iface $ifname " 2>&1 1>/dev/null
|
||||
#this is the last line of the device
|
||||
if [ $? -eq 0 ];then
|
||||
foundflag=1
|
||||
fi
|
||||
|
||||
echo $LINE >> $tempfile
|
||||
done < $filename
|
||||
|
||||
#the insert place is the last line of the config file
|
||||
if [ $foundflag -eq 1 -a $setflag -eq 0 ];then
|
||||
echo "$cmd" >> $tempfile
|
||||
fi
|
||||
mv -f $tempfile $filename
|
||||
echo "Persistent route \"$cmd\" is added in $filename.; "
|
||||
;;
|
||||
|
||||
esac
|
||||
@ -925,7 +884,7 @@ elif [ "$op" = "replace" ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Adding temporary route: $cmd"
|
||||
echo "Adding temporary route: $cmd; "
|
||||
result=`$cmd 2>&1`
|
||||
code=$?
|
||||
if [ $code -ne 0 ]; then
|
||||
@ -935,7 +894,9 @@ elif [ "$op" = "replace" ]; then
|
||||
fi
|
||||
|
||||
#replace the persistent route
|
||||
replace_persistent_route $net $mask $gw $ifname
|
||||
# the $cmd param is used for Ubuntu since it needs to run the specific cmd to enable
|
||||
# the route during the up of the device
|
||||
replace_persistent_route $net $mask $gw $ifname
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
Loading…
Reference in New Issue
Block a user