better error output
[automated-distro-installer] / fai-revm
1 #!/bin/bash -l
2 set -x
3
4 # Assumes pxe config for dhcp has been setup.
5 # Deploy fai configuration to faiserver,
6 # then start a virtual machine to test the config.
7
8 set -eE -o pipefail
9 trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
10
11 redeploy=false
12 if [[ $1 == -r ]]; then
13 redeploy=true
14 fi
15
16 disk_count=2
17
18 script_dir=$(dirname $(readlink -f "$BASH_SOURCE"))
19
20 if [[ $script_dir == /a/bin/* ]]; then
21 rm -rf /a/tmp/fai2
22 mkdir -p /a/tmp
23 cp -ar /a/bin/fai /a/tmp/fai2
24 exec /a/tmp/fai2/${BASH_SOURCE##*/} "$@"
25 fi
26
27 cd $script_dir
28
29
30 new_disk=false
31 [[ ! $1 ]] || new_disk=true
32
33 if [[ $0 == *arch-revm ]]; then
34 # via osinfo-query os. guessing arch is closest to latest fedora.
35 variant=fedora22
36 else
37 if $redeploy; then
38 ./fai-redep
39 fi
40 variant=debian8
41 fi
42
43 name=demohost
44
45 s virshrm $name ||:
46
47
48 disk_arg=()
49 for ((i=1; i <= disk_count; i++)); do
50 f=/var/lib/libvirt/images/${name}$i
51 disk_arg+=("--disk path=$f")
52 if $new_disk || [[ ! -e $f ]]; then
53 s rm -f $f
54 s qemu-img create -o preallocation=metadata -f qcow2 $f 20G
55 fi
56 done
57
58 if [[ $SSH_CLIENT ]]; then
59 console_arg=--noautoconsole
60 else
61 console_arg='&'
62 fi
63
64 # --cpu host: this causes mkfs.btrfs to fail with a stack trace which began
65 # something like:
66 # init_module+0x108/0x1000 [raid6_pq]
67 s virt-install --os-variant $variant -n $name --pxe -r 2048 --vcpus 1 \
68 ${disk_arg[*]} -w bridge=br0,mac=52:54:00:9c:ef:ad \
69 --graphics spice,listen=0.0.0.0 $console_arg
70
71 if [[ ${0##*/} == arch-revm ]]; then
72 sleep 80
73 ./arch-init-remote $name
74 fi