source: drbl-virt/sbin/drbl_PXE_PV-VM_create.sh @ 191

Last change on this file since 191 was 191, checked in by rock, 14 years ago

Add Function Code: generate PXE PV-VM configuration

  • Property svn:executable set to *
File size: 3.9 KB
Line 
1#!/bin/bash
2# Program:
3#   Create PXE PV VM
4# Author:
5#   Jazz, Rock {jazz, rock}@nchc.org.tw
6# Version:
7#    1.0
8# History:                                                                                         
9#   2010/08/27  Rock    First release (1.0)
10
11# [Source]
12source /opt/drbl-virt/conf/drbl-virt.conf
13#source $Work_Path/functions_drbl_PXE_PV-VM_create
14source ./functions_drbl_PXE_PV-VM_create
15
16
17# [Declation]
18# = 1. Varibales declation =
19vm_name=""
20vm_cpu=""
21vm_ram=""
22vm_host=""
23vm_mac=""
24
25vm_dir="/home/domains"
26# = 2. Functions declation =
27Usage(){
28echo "Usage: drbl_PXE_PV-VM_create.sh options"
29echo "Options: "
30echo "-v    vm name"
31echo "-c    cpu number"
32echo "-r    ram size"
33echo "-h    deploy vm to which host"
34echo "Examples: "
35echo "drbl_PXE_PV-VM_create.sh options -v drbl110 -c 2 -ram 512 -h drbl101"
36}
37
38
39# [Main]
40check_root
41# = 1. Parse parameters =
42if [ $# -eq 0 ]; then
43Usage
44fi
45
46while [ $# -gt 0 ]; do
47    case "$1" in
48        -v)
49            shift
50            if [ -z "$(echo $1 |grep ^-.)" ]; then
51                if [ -n "$(echo $1)" ]; then
52                    vm_name=$1
53                else
54                    echo "-v vm_name is null"
55                    Usage && exit 2
56                fi
57            shift
58            fi
59            ;;
60        -c)
61            shift
62            if [ -z "$(echo $1 |grep ^-.)" ]; then
63                if [ -n "$(echo $1)" ]; then 
64                    vm_cpu=$1
65                else
66                    echo "-c cpu_value is null"
67                    Usage && exit 2
68                fi
69            shift
70            fi
71            ;;
72        -r)
73            shift 
74            if [ -z "$(echo $1 |grep ^-.)" ]; then
75                if [ -n "$(echo $1)" ]; then
76                    vm_ram=$1
77                else
78                    echo "-r ram_value is null"
79                    Usage && exit 2
80                fi
81            shift 
82            fi 
83            ;; 
84        -h)
85            shift 
86            if [ -z "$(echo $1 |grep ^-.)" ]; then
87                if [ -n "$(echo $1)" ]; then
88                vm_host=$1
89                else
90                    echo "-h host_value is null"
91                    Usage && exit 2
92                fi
93            shift 
94            fi 
95            ;; 
96        -*)
97            echo "$0 $1 invalid option" >&2
98            echo ""
99            Usage >&2
100            exit 2
101            ;;
102        *)  Usage >&2
103            exit 2
104            ;;
105    esac
106done
107
108# = 2. Get VM MAC address =
109#IP_MAC_files=$(ls $Work_Home/etc | grep 'macadr-VM-eth[0-9]*.txt')
110IP_VM_files=$(ls $Work_Home/etc | grep 'IP_VM_eth[0-9]*')
111IP_VM_right_file=""
112IP_VM_right_line=""
113IP_VM_eth=""
114for IP_VM_file in $IP_VM_files
115do
116    IP_VM_line=$(cat -n $IP_VM_file | grep "$vm_name" | awk '{print $1}') 
117    if [ -n $IP_VM_line ]; then
118        IP_VM_right_file=$IP_VM_file
119        IP_VM_right_line=$IP_VM_line
120    fi
121done
122
123# if no value, exit and check IP_VM_ethX
124if [ -z $IP_VM_right_file ]; then
125    echo ""
126    echo "Error: don't fine ${vm_name}'s IP address"
127    echo "Please check $Wokr_Home/etc/"
128    exit 2
129fi
130
131# start get mac address
132IP_VM_eth=$(echo $IP_VM_right_file | sed 's/IP_VM_//g' )
133vm_mac=$(cat $Work_Home/etc/macadr-VM-${IP_VM_eth}.txt | sed -n "${IP_VM_right_line}")
134
135# = 3. Generate PXE PV-VM configuration  =
136if [ ! -e $vm_dir ]; then
137    mkdir $vm_dir
138fi
139
140vm_cfg=${home_dir}/${vm_name}.cfg
141rm $vm_cfg
142
143# start to generate
144echo "kernel      = '/home/domains/vmlinuz-pxe'" > $vm_cfg
145echo "ramdisk     = '/home/domains/initrd-pxe.img'" >> $vm_cfg
146echo "memory      = '512'" >> $vm_cfg
147echo "name        = \'$vm_name\'" >> $vm_cfg
148echo "vcpus        = \'$vm_cpu\'" >> $vm_cfg
149echo "dhcp        = 'dhcp'" >> $vm_cfg
150echo "vif         = [ \'mac=$vm_mac\']" >> $vm_cfg
151echo "on_poweroff = 'destroy'" >> $vm_cfg
152echo "on_reboot   = 'restart'" >> $vm_cfg
153echo "on_crash    = 'restart'" >> $vm_cfg
154echo "vfb = [ 'type=vnc,vnclisten=0.0.0.0,vncunused=1' ]" >> $vm_cfg
155echo "extra = 'console=hvc0 xencons=tty'" >> $vm_cfg
156
Note: See TracBrowser for help on using the repository browser.