master
1# create new LVM, netboot, ubuntu image
2# Argumetns = -s [size] -v [vg] -n [name] -c [cfg out]
3# Defaults = -s 8G -v xenny -n ubuntu -c [name].cfg
4#!/bin/bash
5
6usage()
7{
8cat << EOF
9usage: $0 options
10
11Create a new Ubuntu 12.04 LVM VM from netboot
12
13OPTIONS:
14 -h Show this message
15 -s [disc size] (default 8G)
16 -m [memory] (default 512)
17 -v [LVM VG name]
18 -n [VM name]
19 -c [cfg out filename]
20 -f Finalize config file for normal use
21EOF
22}
23
24finalize()
25{
26 # Finalize $CFG for normal use
27 sed -i '/kernel/s/^/# /' $CFG
28 sed -i '/ramdisk/s/^/# /' $CFG
29 sed -i '/extra/s/^/# /' $CFG
30 echo -e "bootloader = \"pygrub\"" >> $CFG
31}
32
33defaults()
34{
35 # Defaults if not flag assigned
36 if [[ -z $SIZE ]]; then SIZE="8G"; fi
37 if [[ -z $VG ]]; then VG="xenny"; fi
38 if [[ -z $NAME ]]; then NAME="ubuntu"; fi
39 if [[ -z $CFG ]]; then CFG=`pwd`"/"$NAME".cfg"; fi
40 if [[ -z $RAM ]]; then RAM="512"; fi
41 MIRROR="http://mirror.anl.gov/pub/ubuntu/"
42 LONGNAME="ubuntu-netboot-precise"
43 IMGDIR="/var/lib/xen/images/$LONGNAME"
44}
45
46if [[ $EUID -ne 0 ]]; then
47 echo "You must be a root user" 2>&1
48 exit 1
49else
50 SIZE=
51 VG=
52 NAME=
53 CFG=
54 RAM=
55 while getopts “hfs:m:v:n:c:” OPTION
56 do
57 case $OPTION in
58 h)
59 usage
60 exit 1
61 ;;
62 s)
63 SIZE=$OPTARG
64 ;;
65 m)
66 RAM=$OPTARG
67 ;;
68 v)
69 VG=$OPTARG
70 ;;
71 n)
72 NAME=$OPTARG
73 ;;
74 c)
75 CFG=$OPTARG
76 ;;
77 f)
78 defaults
79 finalize
80 exit
81 ;;
82 ?)
83 usage
84 exit
85 ;;
86 esac
87 done
88
89 # Assign default values
90 defaults
91
92 # Create the LVM
93 echo -e "\n> Creating LVM Container"
94 lvcreate -L $SIZE -n $NAME /dev/$VG
95 lvscan | grep $NAME
96
97 # Grab the netboot initrd and vmlinuz
98 echo -e "\n> Grabbing netboot/initrd"
99 mkdir -p $IMGDIR
100 cd $IMGDIR
101 wget -nc $MIRROR/ubuntu/dists/precise/main/installer-amd64/current/images/netboot/xen/initrd.gz
102 wget -nc $MIRROR/ubuntu/dists/precise/main/installer-amd64/current/images/netboot/xen/vmlinuz
103
104 # Create .cfg file
105 rm $CFG # fix?
106 echo -e "\n> Creating" $CFG "file"
107 echo -e "name = \""$NAME"\"" >> $CFG
108 echo -e "memory = $RAM" >> $CFG
109 echo -e "disk = ['phy:/dev/"$VG"/"$NAME",xvda,w']" >> $CFG
110 echo -e "vif = [' ']" >> $CFG
111 echo -e "kernel = \"$IMGDIR/vmlinuz\"" >> $CFG
112 echo -e "ramdisk = \"$IMGDIR/initrd.gz\"" >> $CFG
113 echo -e "extra = \"debian-installer/exit/always_halt=true -- console=hvc0\"" >> $CFG
114
115 # Launch the vm
116 read -n1 -p "Continue? (y/n) "
117 echo [[ $REPLY = [yY] ]] && echo Creating $NAME || { echo "Exiting..."; exit 1; }
118 xm create -c $CFG
119
120fi