fix pxe server leaving background procs
[automated-distro-installer] / dsfull
1 #!/bin/bash -l
2 # Copyright (C) 2016 Ian Kelling
3
4 # distro setup full using fai. (assuming we already synced data files to the host)
5
6 set -eE -o pipefail
7 cleanup() { :; }
8 trap 'cleanup; echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
9
10 reboot=true
11 if [[ $1 == -r ]]; then
12 reboot=false
13 shift
14 fi
15
16 host=$1
17
18 if [[ ! $host || $host == -h ]]; then
19 echo "$0: error: expected 1 arg of hostname"
20 exit 1
21 fi
22
23 set -x
24 if $reboot; then
25 # untested, this caused hang using here doc.
26 ssh $host "touch /tmp/keyscript-off; sudo reboot" ||:
27 fi
28
29 cleanup() { pxe-server :; }
30 pxe-server -a fai $host
31 cleanup() { :; }
32
33 timedout=true
34 for ((i=0; i<240; i++)); do
35 if timeout -s 9 10 ssh $host :; then
36 timedout=false
37 break
38 fi
39 sleep 5
40 done
41 if $timeout; then
42 echo "$0: error: timeout"
43 exit 1
44 fi
45 dsremote $host