X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=fai-revm;h=aa10dfc8eeb18bc9b3f04f9067c4c43ee4736605;hb=affd7d3cdd0671dcca07f29de9c86b5e3b57ea1f;hp=9c8fd9c89f528cd7cc0040c72ae17dc1099faa56;hpb=a43d3eec943c5f0491b300214a3c744d31a6e542;p=automated-distro-installer diff --git a/fai-revm b/fai-revm index 9c8fd9c..aa10dfc 100755 --- a/fai-revm +++ b/fai-revm @@ -6,18 +6,45 @@ 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 + +script_dir=$(dirname $(readlink -f "$BASH_SOURCE")) + +if [[ $script_dir == /a/bin/* ]]; then + rm -rf /a/tmp/fai2 + mkdir -p /a/tmp + cp -ar /a/bin/fai /a/tmp/fai2 + exec /a/tmp/fai2/${BASH_SOURCE##*/} "$@" +fi + +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 @@ -25,17 +52,36 @@ name=demohost s virshrm $name ||: -for f in /var/lib/libvirt/images/${name}{,b}; do + +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 - s qemu-img create -o preallocation=metadata -f qcow2 $f 30G + s rm -f $f + s qemu-img create -o preallocation=metadata -f qcow2 $f 20G fi done -disk_arg=("--disk path=/var/lib/libvirt/images/$name"{,b}) -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