X-Git-Url: https://git.madduck.net/code/vinst.git/blobdiff_plain/5e85da2495bdbb347e48899e5cc627252f5ac048..0b7f92c7dc6c54c5ddc6057e8640ac909c721fe4:/vinst?ds=sidebyside

diff --git a/vinst b/vinst
index f323d56..6b6ca5d 100755
--- a/vinst
+++ b/vinst
@@ -10,6 +10,8 @@ QEMU_URI=qemu:///system
 SUITE=wheezy
 CONSOLE='console=tty0 console=ttyS0,115200n8'
 DEBUG=0
+WIPE=0
+RESTART=0
 
 while [ -n "$1" ]; do
   case "$1" in
@@ -71,13 +73,28 @@ while [ -n "$1" ]; do
     (-a|--arch)
       shift
       if [ -z "$1" ]; then
-        echo >&2 'E: --arch/-a needs size argument'
+        echo >&2 'E: --arch/-a needs arch argument'
         exit 1
       fi
       ARCH="$1"
       ;;
+    (-m|--mac)
+      shift
+      if [ -z "$1" ]; then
+        echo >&2 'E: --mac/-m needs mac address argument'
+        exit 1
+      fi
+      MAC="$1"
+      ;;
     (--debug)
       DEBUG=1
+      set -vx
+      ;;
+    (--wipe)
+      WIPE=1
+      ;;
+    (--restart)
+      RESTART=1
       ;;
   esac
   shift
@@ -123,13 +140,21 @@ if [ -z "$ARCH" ]; then
   ARCH=$(dpkg --print-architecture)
 fi
 
+if [ -z "$MAC" ]; then
+  bytes=$(dd status=none if=/dev/urandom bs=3 count=1 | hexdump -v -e '/1 ":%02X"')
+  MAC=52:54:00$bytes
+fi
+
 cat >&2 <<_eof
   hostname: $HOSTNAME
       arch: $ARCH
        ram: $RAM MiB
       disk: $DISK GiB
+      wipe: $WIPE
    console: $CONSOLE
+   restart: $RESTART
 net bridge: $BRIDGE
+macaddress: $MAC
 _eof
 if [ -n "$IPADDRESS" ]; then
   cat >&2 <<_eof
@@ -146,17 +171,23 @@ fi
 
 echo >&2
 
-set -v
 virsh --connect=$QEMU_URI vol-create-as $STORAGE_POOL virt-$HOSTNAME ${DISK}G
+if [ $WIPE = 1 ]; then
+  echo >&2 "Wiping disk…"
+  virsh --connect=$QEMU_URI vol-wipe --pool $STORAGE_POOL --algorithm zero virt-$HOSTNAME
+fi
 
-[ $DEBUG = 1 ] && DEBUGFLAG=--debug
+if [ $DEBUG = 1 ]; then
+  DEBUGFLAG=--debug
+  extra_args="$extra_args DEBCONF_DEBUG=5"
+fi
 
 virt-install --connect=$QEMU_URI \
   ${DEBUGFLAG:-} \
   -n $HOSTNAME \
   -r $RAM \
   --disk vol=$STORAGE_POOL/virt-$HOSTNAME \
-  -w bridge=$BRIDGE \
+  --network bridge=$BRIDGE,mac=$MAC \
   --graphics=vnc \
   --serial=pty \
   --watchdog i6300esb,action=reset \
@@ -169,4 +200,7 @@ virt-install --connect=$QEMU_URI \
   "$@"
 
 virsh --connect=$QEMU_URI console $HOSTNAME
-virsh --connect=$QEMU_URI "start $HOSTNAME; console $HOSTNAME"
+
+if [ $RESTART = 1 ]; then
+  virsh --connect=$QEMU_URI "start $HOSTNAME; console $HOSTNAME"
+fi