ae651127ff7d2dda44dfe763bf231c2700338982
[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     "fc12"      |                               \
70     "fc11"      |                               \
71     "fc10"      |                               \
72     "fc9"       |                               \
73     "fc8"       |                               \
74     "fc7"       |                               \
75     "fc6"       |                               \
76     "fc5"       |                               \
77     "fc4"       |                               \
78     "fc3"       |                               \
79     "fc2"       |                               \
80     "rhel4"     |                               \
81     "rh9"       |                               \
82     "rh8.0"     |                               \
83     "rh7.3"     )
84       FLINUX="RedHat"   #Redhat family distribution
85       ;;
86     "ovzubu9.4" |                               \
87     "ubu9.4"    |                               \
88     "ubu8.4"    )
89       FLINUX="Debian"   #Debian family distribution
90       ;;
91     "*"         )
92       abort "Unknown Linux distribution, exiting"
93       exit 1 
94       ;;
95     esac;
96 #===================================================================
97 #extracting node ip number
98   IPNUM=`dig +short $VSR | grep -v [a-z]`
99   if [ -z "$IPNUM" ] ; then
100     abort "No IP number found for $VSR hostname"
101     fi
102 #-------------------------------------------------------------------
103 #lets create the node file system
104   TPL=$TEMPLATE.tar.gz
105   vzgot create $NODENAME $TPL $DISTRIB $CPUARCH
106   RETVAL=$?
107   if [ $RETVAL -ne 0 ] ; then 
108     abort "Unable to create $NODENAME root file system"
109     fi
110 #-------------------------------------------------------------------
111 #lets do the node first boot
112   vzgot firstboot -D $FLINUX -i $IPNUM -d $DOMAIN -n $NODENAME $NODENAME
113   RETVAL=$?
114   if [ $RETVAL -ne 0 ] ; then 
115     abort "Unable to do $NODENAME first boot"
116     fi
117 #-------------------------------------------------------------------
118 #lets start vzgot
119   vzgot boot $NODENAME
120   RETVAL=$?
121   if [ $RETVAL -ne 0 ] ; then 
122     abort "Unable to boot $NODENAME"
123     fi
124   #everything fine
125   echo "$NODENAME is now installed and 'up and running'"
126 #===================================================================
127   done
128 #END
129 rm -f $LOCKFILE