#!/bin/sh
# moabconf.sh: A basic script to cleanly configure and start Moab and TORQUE
# on the specified node
#
#headconf.sh $HEADNODE $CLIENTNAME $CLIENTKEY
PBSROOT="/usr/spool/PBS" # PBS root dir
MOABHOMEDIR="/opt/moab"
TMPNODEFILE="tmp.nodes.out"
TMPMOABCFG="tmp.moab.cfg"
TMPMOABPRV="tmp.moab-private.cfg"
D="-------" # make output a little more readable
if [ $# -ne 3 ]
then
echo USAGE: $0 HOSTNAME CLIENTNAME CLIENTKEY
exit 1
fi
HOSTNAME=$1
shift
CLIENTNAME=$1
shift
CLIENTKEY=$1
if [ ! -f $TMPNODEFILE ]
then
echo "no temporary node file $TMPNODEFILE"
exit 1
fi
################### Setup TORQUE MOMs ##############
COMPUTENODES=`cat $TMPNODEFILE`
rm -f $TMPNODEFILE
for NODE in $COMPUTENODES
do
echo $D Killing pbs_mom
ssh root@$NODE "killall -s 9 pbs_mom"
# Note: should remove old job files and accounting data
# Note: should kill user processes
echo $D Setting up $NODE config.
ssh root@$NODE "echo \"\$clienthost $HOSTNAME\" > $PBSROOT/mom_priv/config"
ssh root@$NODE "echo \"\$logevent 255\" >> $PBSROOT/mom_priv/config"
# add server name to server_name file
ssh root@$NODE "echo $HOSTNAME > $PBSROOT/server_name"
echo $D Starting PBS Mom
ssh root@$NODE "/usr/local/sbin/pbs_mom"
done
################### Setup TORQUE Server ###################
echo $D Setting up TORQUE server on $HOSTNAME
echo $D Killing pbs_server on $HOSTNAME
ssh root@$HOSTNAME "killall -s 9 pbs_server"
############ PBS Server setup ###########
# Setup config file
echo $D Setting up new config file on $HOSTNAME
ssh root@$HOSTNAME "echo \"\$clienthost $HOSTNAME\" > $PBSROOT/mom_priv/config"
ssh root@$HOSTNAME "echo \"\$logevent 255\" >> $PBSROOT/mom_priv/config"
echo $D Setting up servername
ssh root@$HOSTNAME "echo $HOSTNAME > $PBSROOT/server_name"
# Grab real hostname
PBSNAME=`ssh root@$HOSTNAME hostname`
echo $D Setting up managers/operators
ssh root@$HOSTNAME "echo \"root@$PBSNAME.icluster.org\" > $PBSROOT/server_priv/acl_svr/managers"
ssh root@$HOSTNAME "echo \"root@$PBSNAME.icluster.org\" > $PBSROOT/server_priv/acl_svr/operators"
echo $D Starting PBS Server
# pbs_server -t create blocks
ssh root@$HOSTNAME /usr/local/sbin/pbs_server -t create &
# give pbs_server time to initialize
sleep 2
ssh root@$HOSTNAME qterm
echo $D Creating new nodelist file on $HOSTNAME
ssh root@$HOSTNAME "echo > $PBSROOT/server_priv/nodes"
for NODE in $COMPUTENODES
do
ssh root@$HOSTNAME "echo $NODE >> $PBSROOT/server_priv/nodes"
done
ssh root@$HOSTNAME pbs_server
################### Setup Moab ######################
echo $D Killing Moab on $HOSTNAME
ssh root@$HOSTNAME "killall -s 9 moab"
echo $D Clearing Moab directories
ssh root@$HOSTNAME "rm -rf $MOABHOMEDIR/{log,stats,spool,traces}"
ssh root@$HOSTNAME "mkdir $MOABHOMEDIR/log $MOABHOMEDIR/stats $MOABHOMEDIR/spool $MOABHOMEDIR/traces"
ssh root@$HOSTNAME "chmod 1777 $MOABHOMEDIR/spool"
#push $HOST $PORT $CLIENTKEYS
echo $D Creating \"$TMPMOABCFG\"
echo "
SCHEDCFG[$HOSTNAME] SERVER=$HOSTNAME.icluster.org MODE=NORMAL
RMCFG[$HOSTNAME] TYPE=PBS
ADMINCFG[1] USERS=root" > $TMPMOABCFG
echo $D Copying \"$TMPMOABCFG\" to default \"$MOABHOMEDIR/moab.cfg\" on $HOSTNAME
scp $TMPMOABCFG root@$HOSTNAME:$MOABHOMEDIR/moab.cfg
echo $D Removing \"$TMPMOABCFG\"
rm -f $TMPMOABCFG
# PUSH THE KEYS OVER
echo "CLIENTCFG[RM:$CLIENTNAME] KEY=$CLIENTKEY AUTH=admin1" > $TMPMOABPRV
echo $D Pushing \"$TMPMOABPRV\" to default \"$MOABHOMEDIR/moab-private.cfg\" on $HOSTNAME
scp $TMPMOABPRV root@$HOSTNAME:$MOABHOMEDIR/moab-private.cfg
echo $D Removing \"$TMPMOABPRV\"
rm $TMPMOABPRV
# START MOAB ON $HOSTNAME
echo $D Starting \"/usr/local/sbin/moab\" on $HOSTNAME
ssh -f root@$HOSTNAME "export MOABHOMEDIR=$MOABHOMEDIR;/usr/local/sbin/moab"
ssh root@$HOSTNAME "/usr/local/bin/mschedctl -r2"
echo "
`date`
Hostlist: $HOSTLIST
Master: $HOSTNAME
Clientname: $CLIENTNAME
Key: $CLIENTKEY
" >> moabconfig.log
echo $D DONE.