#!/bin/bash
if [ $# != 1 ] ; then
echo "Usage: $0 [name]"
exit 1
fi
. cluster.conf
GATEWAY=$SERVER
LINE=$( cat $DHCP | grep $1 | awk {'print $2'})
if [ -z $LINE ] || [ $LINE != $1 ] ; then
echo "Don't find record in $DHCP for $1!"
exit 1
fi
NOME=$LINE
MAC=$( cat $DHCP | grep $NOME | awk {'print $6'} | tr -d ";" )
IP=$( cat $DHCP | grep $NOME | awk {'print $8'} | tr -d ";" )
echo "Node:"
echo " Name: $NOME"
echo " MAC : $MAC"
echo " IP : $IP"
echo
echo -n "Continue? (Return) | (CRTL+C for abort)"
read
checkfile(){
if [ ! -e $1 ] ; then
echo "Don't find $1!"
exit 1
fi
}
if [ ! -d $TFTPDIR/$NOME ] ; then
echo "Don't find root directory for $NOME in $TFTPDIR/$NOME!"
exit 1
fi
echo "Configure PXE..."
FILE=01-$( echo $MAC | tr ":" "-" | tr "[A-Z]" "[a-z]" )
if [ ! -e $TFTPDIR/$KERNEL ] ; then
echo "Don't kernel in $TFTPDIR/$KERNEL!"
exit 1
fi
if [ ! -d $TFTPDIR/pxelinux.cfg/ ] ; then
echo "Don't find PXE config directory!"
exit 1
fi
for i in $( ls $TFTPDIR/pxelinux.cfg/ ) ; do
if [ $TFTPDIR/pxelinux.cfg/$FILE != $TFTPDIR/pxelinux.cfg/$i ] ; then
if [ ! -z $( cat $TFTPDIR/pxelinux.cfg/$i | grep $NOME \
| awk {'{print $1}'} ) ] &> /dev/null ; then
echo "Find another PXE file for $NOME $i... delete!"
rm -f $TFTPDIR/pxelinux.cfg/$i
fi
fi
done
echo "LABEL linux
KERNEL $KERNEL
APPEND root=/dev/nfs ip=dhcp
nfsroot=$SERVER:/tftpboot/$NOME
init=/sbin/init
" > $TFTPDIR/pxelinux.cfg/$FILE
ROOT="$TFTPDIR/$NOME"
echo "Configure fstab..."
checkfile $ROOT/etc/fstab
echo "
$SERVER:/tftpboot/$NOME /nfs defaults 1 0
$SERVER:/usr /usr nfs defaults 1 0
$SERVER:/usr/local /usr/local nfs defaults 1 0
$SERVER:/root /root nfs defaults 1 0
$SERVER:/home /home nfs defaults 1 0
/dev/hda1 /data ext3 defaults 1 1
none /proc proc defaults 0 0
" > $ROOT/etc/fstab
echo "Configure eth0..."
echo "DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=$IP
NETMASK=255.255.255.0
GATEWAY=$GATEWAY
" > $ROOT/etc/sysconfig/network-scripts/ifcfg-eth0
echo "Configure Hostname..."
checkfile $ROOT/etc/sysconfig/network
echo "NETWORKING=yes
HOSTNAME=$NOME
" > $ROOT/etc/sysconfig/network
echo "Make /etc/hosts for $NOME..."
echo "127.0.0.1 localhost.localdomain localhost l$NOME
$SERVER $MASTER
" > $ROOT/etc/hosts
cat $DHCP | grep host | awk {'print $8" "$2" g"$2'}\
| tr -d ";" >> $ROOT/etc/hosts
echo
echo "Configure services..."
rm -fr $ROOT/etc/rc3.d/* $ROOT/etc/rc0.d/* $ROOT/etc/rc6.d/*
for i in $SERVICE_START ; do
nome=$( echo $i | cut -b 4- )
if [ ! -e $ROOT/etc/init.d/$nome ] ; then
echo
echo "Service $i not available for start!"
else
( cd $ROOT/etc/rc3.d ; ln -s ../init.d/$nome $i )
fi
done
( cd $ROOT/etc/rc3.d ; ln -s ../rc.local S99local )
for i in $SERVICE_STOP ; do
nome=$( echo $i | cut -b 4- )
if [ ! -e $ROOT/etc/init.d/$nome ] ; then
echo
echo "Service $i not available for shutdown!"
else
( cd $ROOT/etc/rc0.d ; ln -s ../init.d/$nome $i )
( cd $ROOT/etc/rc6.d ; ln -s ../init.d/$nome $i )
fi
done
( cd $ROOT/etc/rc0.d ; ln -s ../init.d/halt S01halt )
( cd $ROOT/etc/rc6.d ; ln -s ../init.d/halt S01reboot )
echo "Done."
exit 0