Moab Adaptive Computing Suite Administrator's Guide 5.4
#!/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.