fixes plus readme updates
[automated-distro-installer] / fai-revm
index 4009ede6e37a081ab7da6d631dd25c69da5534e1..4b3d0d01501f3741c0e17e96cdf84b30e5a6792d 100755 (executable)
--- a/fai-revm
+++ b/fai-revm
 
 
 
-cleanup() { :; }
-set -eE -o pipefail
-trap 'cleanup; echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
-script_dir=$(dirname $(readlink -f "$BASH_SOURCE"))
+x="$(readlink -f "$BASH_SOURCE")"
+script_dir="${x%/*}"
+source "${script_dir}/bash-trace"
 
 e() { echo "$*"; "$@"; }
 
@@ -34,9 +33,11 @@ then start a virtual machine to test the config
 Note, sometimes shutting down the existing demohost vm
 fails. Just run again if that happens.
 
--r         Do not boot after install is complete
+-d         Don't do dhcp setup for when we aren't on Ian's home network.
 -n         Create new qcow2(s) for vm. Good for testing partitioning
            script, to ensure a blank disk.
+-p         Use pxe instead of autodiscover iso with fai.
+-r         Do not boot after install is complete
 -h|--help  Print help and exit.
 
 Note: Uses GNU getopt options parsing style
@@ -46,11 +47,14 @@ EOF
 
 orig_args=("$@")
 new_disk=false
-temp=$(getopt -l help hnr "$@") || usage 1
+pxe=false
+temp=$(getopt -l help dnprh "$@") || usage 1
 eval set -- "$temp"
 while true; do
     case $1 in
+        -d) dhcp_arg=-d; shift ;;
         -n) new_disk=true; shift ;;
+        -p) pxe=true; shift ;;
         -r) reboot_arg=--noreboot; shift ;;
         -h|--help) usage ;;
         --) shift; break ;;
@@ -58,6 +62,7 @@ while true; do
     esac
 done
 
+
 # change this to test different disk counts. 1 and > 1 should be the only
 # important things to test.
 disk_count=1
@@ -67,7 +72,6 @@ if [[ $script_dir == /a/bin/* ]]; then
     # Copy our script elsewhere so we can develop it
     # and save it at the same time it's running
     rm -rf /tmp/faifreeze
-    mkdir -p /a/tmp
     cp -ar /a/bin/fai /tmp/faifreeze
     exec /tmp/faifreeze/${BASH_SOURCE##*/} "${orig_args[@]}"
 fi
@@ -79,17 +83,27 @@ is_arch_revm() {
 }
 
 cleanup() {
-    ./pxe-server
+    echo "doing cleanup"
+    e ./pxe-server $dhcp_arg
     ./faiserver-disable
 }
+_errcatch_cleanup=cleanup
+
+boot_arg=--pxe
 if is_arch_revm; then
-    ./pxe-server demohost arch
+    e ./pxe-server $dhcp_arg demohost arch
     sleep 2
     # via osinfo-query os. guessing arch is closest to latest fedora.
     variant=fedora22
 else
-    ./pxe-server demohost fai
+  if $pxe; then
+    e ./pxe-server $dhcp_arg demohost fai
     sleep 2
+    else
+      boot_arg="--cdrom /a/bin/fai-basefiles/autodiscover.iso"
+     e fai-redep
+     e myfai-chboot default
+fi
     # I don't think these variants actually make a diff for us, but I
     # use the appropriate one when trying a new distro just in case.
     variant=ubuntu14.04
@@ -116,15 +130,24 @@ if [[ $SSH_CLIENT ]]; then
     console_arg=--noautoconsole
 fi
 
+# docker makes forward default to drop, which blocks the vm pxe on flidas. easiest solution:
+s iptables -P FORWARD ACCEPT
+
 # --cpu host: this causes mkfs.btrfs to fail with a stack trace which began
 # something like:
 # init_module+0x108/0x1000 [raid6_pq]
 #
 # uniq is to stop gtk-warning spam
-e s virt-install --os-variant $variant  -n $name --pxe -r 2048 --vcpus 1 \
+# e s virt-install --os-variant $variant  -n $name --pxe -r 2048 --vcpus 1 \
+#   ${disk_arg[*]} -w bridge=br0,mac=52:54:00:9c:ef:ad $reboot_arg \
+#   --graphics spice,listen=0.0.0.0 $console_arg |& grep -v '^ *$' | uniq &
+
+
+e s virt-install --os-variant $variant  -n $name $boot_arg -r 2048 --vcpus 1 \
   ${disk_arg[*]} -w bridge=br0,mac=52:54:00:9c:ef:ad $reboot_arg \
   --graphics spice,listen=0.0.0.0 $console_arg |& grep -v '^ *$' | uniq &
 
+
 if [[ $SSH_CLIENT ]]; then
     fg
 fi
@@ -133,7 +156,7 @@ sleep 30
 while ! timeout -s 9 10 ssh -oBatchMode=yes root@$name /bin/true; do
     e sleep 5
 done
-cleanup() { :; }
+unset _errcatch_cleanup
 e pxe-server
 if is_arch_revm; then
     ./arch-init-remote $name