Release.
[safe/jmp/vzgot] / shell / vzgot.mksrvz
1 #! /bin/bash
2 #vzgot.mksrvz
3 #-------------------------------------------------------------------
4 #procedure to install a specific VZserver 
5 #$1 is the vserver node name    (will become nodename.your_domain.name)
6 #-------------------------------------------------------------------
7 NODENAME=$1
8 DOMAIN=`dnsdomainname`
9 VSR=$NODENAME.$DOMAIN
10 #===================================================================
11 #setting default distribution and Architecture.
12 DISTRIB="fc12"
13 CPUARCH="i386"
14 #===================================================================
15 #defining default template name 
16 #you can modify it according your own template setup name rule
17 TPL=linux-$DISTRIB-$CPUARCH-vzserver.tar.gz
18 #===================================================================
19 #lock procedure
20 lockproc()
21
22 {
23 LOCKFILE=/var/lock/`basename $0`.$1.lck
24
25 trap "rm -f $LOCKFILE ; exit 1" 1 2 3 15
26 if (set -C; : > $LOCKFILE) 2> /dev/null ; then
27     echo $$ >> $LOCKFILE
28   else
29     echo "Another '`basename $0` $1' is running, existing at once!"
30     echo "remove $LOCKFILE, if it is not the case"
31     rm -f $LOCKFILE
32     exit 0;
33   fi
34 }
35 #-------------------------------------------------------------------
36 #abort procedure
37 abort ()
38
39 {
40 echo "$1"
41 rm -f $LOCKFILE
42 exit 1;
43 }
44
45 #===================================================================
46 #main process
47
48 #locking building process
49 lockproc $1
50 #===================================================================
51 #getting all the needed information from the vzgot_list file
52 sed 's/#.*//g' /etc/vzgot/vzgot_list      |     \
53                  grep -v '^[[:space:]]*$' |     \
54                  grep $NODENAME           |     \
55 while read -r NODE TEMPLATE DISTRIB CPUARCH
56   do
57
58 #setting distribution
59   FLINUX="RedHat"
60   case "$DISTRIB" in
61     "ovzel5.4"  |                               \
62     "el5.2"     |                               \
63     "el5.3"     |                               \
64     "el5.4"     |                               \
65     "el4.8"     |                               \
66     "el4.7"     |                               \
67     "el4.6"     |                               \
68     "ovzfc12"   |                               \
69     "fc13"      |                               \
70     "fc12"      |                               \
71     "fc11"      |                               \
72     "fc10"      |                               \
73     "fc9"       |                               \
74     "fc8"       |                               \
75     "fc7"       |                               \
76     "fc6"       |                               \
77     "fc5"       |                               \
78     "fc4"       |                               \
79     "fc3"       |                               \
80     "fc2"       |                               \
81     "rhel4"     |                               \
82     "rh9"       |                               \
83     "rh8.0"     |                               \
84     "rh7.3"     )
85       FLINUX="RedHat"   #Redhat family distribution
86       ;;
87     "ovzubu9.4" |                               \
88     "ubu9.4"    |                               \
89     "ubu8.4"    )
90       FLINUX="Debian"   #Debian family distribution
91       ;;
92     "*"         )
93       abort "Unknown Linux distribution, exiting"
94       exit 1 
95       ;;
96     esac;
97 #===================================================================
98 #extracting node ip number
99   IPNUM=`dig +short $VSR | grep -v [a-z]`
100   if [ -z "$IPNUM" ] ; then
101     abort "No IP number found for $VSR hostname"
102     fi
103 #-------------------------------------------------------------------
104 #lets create the node file system
105   TPL=$TEMPLATE.tar.gz
106   vzgot create $NODENAME $TPL $DISTRIB $CPUARCH
107   RETVAL=$?
108   if [ $RETVAL -ne 0 ] ; then 
109     abort "Unable to create $NODENAME root file system"
110     fi
111 #-------------------------------------------------------------------
112 #lets do the node first boot
113   vzgot firstboot -D $FLINUX -i $IPNUM -d $DOMAIN -n $NODENAME $NODENAME
114   RETVAL=$?
115   if [ $RETVAL -ne 0 ] ; then 
116     abort "Unable to do $NODENAME first boot"
117     fi
118 #-------------------------------------------------------------------
119 #lets start vzgot
120   vzgot boot $NODENAME
121   RETVAL=$?
122   if [ $RETVAL -ne 0 ] ; then 
123     abort "Unable to boot $NODENAME"
124     fi
125   #everything fine
126   echo "$NODENAME is now installed and 'up and running'"
127 #===================================================================
128   done
129 #END
130 rm -f $LOCKFILE