master
Raw Download raw file
  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