X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=fai-revm;h=aa10dfc8eeb18bc9b3f04f9067c4c43ee4736605;hb=affd7d3cdd0671dcca07f29de9c86b5e3b57ea1f;hp=79b54a2e303f7acc9d42dee10c0e899ae1664a8f;hpb=3c98a1230f8c0177d194038ac9c4db70648af792;p=automated-distro-installer diff --git a/fai-revm b/fai-revm index 79b54a2..aa10dfc 100755 --- a/fai-revm +++ b/fai-revm @@ -6,8 +6,13 @@ set -x # then start a virtual machine to test the config. set -eE -o pipefail -trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?"' ERR +trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR +# I had this set false as default before, can't remember why. oh well. +redeploy=true +if [[ $1 == -r ]]; then + redeploy=false +fi disk_count=2 @@ -15,23 +20,31 @@ script_dir=$(dirname $(readlink -f "$BASH_SOURCE")) if [[ $script_dir == /a/bin/* ]]; then rm -rf /a/tmp/fai2 - cp -r /a/bin/fai /a/tmp/fai2 - exec /a/tmp/fai2/fai-revm "$@" + mkdir -p /a/tmp + cp -ar /a/bin/fai /a/tmp/fai2 + exec /a/tmp/fai2/${BASH_SOURCE##*/} "$@" fi -cd $(dirname $(readlink -f "$BASH_SOURCE")) +cd $script_dir +is_arch_revm() { + [[ ${0##*/} == arch-revm ]] +} new_disk=false [[ ! $1 ]] || new_disk=true -cd $(dirname $(readlink -f "$BASH_SOURCE")) - -if [[ $0 == *arch-revm ]]; then +if is_arch_revm; then + ./pxe-server arch & + sleep 2 # via osinfo-query os. guessing arch is closest to latest fedora. variant=fedora22 else - ./fai-redep + ./pxe-server fai & + sleep 2 + if $redeploy; then + ./fai-redep + fi variant=debian8 fi @@ -39,20 +52,36 @@ name=demohost s virshrm $name ||: + disk_arg=() for ((i=1; i <= disk_count; i++)); do f=/var/lib/libvirt/images/${name}$i disk_arg+=("--disk path=$f") if $new_disk || [[ ! -e $f ]]; then - rm -f $f + s rm -f $f s qemu-img create -o preallocation=metadata -f qcow2 $f 20G fi done -s virt-install --os-variant $variant --cpu host -n $name --pxe -r 2048 --vcpus 1 \ - ${disk_arg[*]} -w bridge=br0,mac=52:54:00:9c:ef:ad & +if [[ $SSH_CLIENT ]]; then + console_arg=--noautoconsole +fi + +# --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 +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 \ + --graphics spice,listen=0.0.0.0 $console_arg |& grep -v '^$' | uniq & + +if [[ $SSH_CLIENT ]]; then + fg +fi + -if [[ $0 == *arch-revm ]]; then - sleep 80 +if is_arch_revm; then + while ! timeout 10 ssh $name /bin/true; do sleep 1; done ./arch-init-remote $name fi