#! /bin/bash #vzgot.mksrvz #------------------------------------------------------------------- #procedure to install a specific VZserver #$1 is the vserver node name (will become nodename.your_domain.name) #------------------------------------------------------------------- NODENAME=$1 DOMAIN=`dnsdomainname` VSR=$NODENAME.$DOMAIN #=================================================================== #setting default distribution and Architecture. DISTRIB="fc12" CPUARCH="i386" #=================================================================== #defining default template name #you can modify it according your own template setup name rule TPL=linux-$DISTRIB-$CPUARCH-vzserver.tar.gz #=================================================================== #lock procedure lockproc() { LOCKFILE=/var/lock/`basename $0`.$1.lck trap "rm -f $LOCKFILE ; exit 1" 1 2 3 15 if (set -C; : > $LOCKFILE) 2> /dev/null ; then echo $$ >> $LOCKFILE else echo "Another '`basename $0` $1' is running, existing at once!" echo "remove $LOCKFILE, if it is not the case" rm -f $LOCKFILE exit 0; fi } #------------------------------------------------------------------- #abort procedure abort () { echo "$1" rm -f $LOCKFILE exit 1; } #=================================================================== #main process #locking building process lockproc $1 #=================================================================== #getting all the needed information from the vzgot_list file sed 's/#.*//g' /etc/vzgot/vzgot_list | \ grep -v '^[[:space:]]*$' | \ grep $NODENAME | \ while read -r NODE TEMPLATE DISTRIB CPUARCH do #setting distribution FLINUX="RedHat" case "$DISTRIB" in "ovzel5.4" | \ "el5.2" | \ "el5.3" | \ "el5.4" | \ "el4.8" | \ "el4.7" | \ "el4.6" | \ "ovzfc12" | \ "fc13" | \ "fc12" | \ "fc11" | \ "fc10" | \ "fc9" | \ "fc8" | \ "fc7" | \ "fc6" | \ "fc5" | \ "fc4" | \ "fc3" | \ "fc2" | \ "rhel4" | \ "rh9" | \ "rh8.0" | \ "rh7.3" ) FLINUX="RedHat" #Redhat family distribution ;; "ovzubu9.4" | \ "ubu9.4" | \ "ubu8.4" ) FLINUX="Debian" #Debian family distribution ;; "*" ) abort "Unknown Linux distribution, exiting" exit 1 ;; esac; #=================================================================== #extracting node ip number IPNUM=`dig +short $VSR | grep -v [a-z]` if [ -z "$IPNUM" ] ; then abort "No IP number found for $VSR hostname" fi #------------------------------------------------------------------- #lets create the node file system TPL=$TEMPLATE.tar.gz vzgot create $NODENAME $TPL $DISTRIB $CPUARCH RETVAL=$? if [ $RETVAL -ne 0 ] ; then abort "Unable to create $NODENAME root file system" fi #------------------------------------------------------------------- #lets do the node first boot vzgot firstboot -D $FLINUX -i $IPNUM -d $DOMAIN -n $NODENAME $NODENAME RETVAL=$? if [ $RETVAL -ne 0 ] ; then abort "Unable to do $NODENAME first boot" fi #------------------------------------------------------------------- #lets start vzgot vzgot boot $NODENAME RETVAL=$? if [ $RETVAL -ne 0 ] ; then abort "Unable to boot $NODENAME" fi #everything fine echo "$NODENAME is now installed and 'up and running'" #=================================================================== done #END rm -f $LOCKFILE