#!/bin/bash -l
# Copyright (C) 2016 Ian Kelling
-# This program is under GPL v. 3 or later, see <http://www.gnu.org/licenses/>
-# distro setup full. (assuming we already synced data files to the host)
+# distro setup full using fai. (assuming we already synced data files to the host)
+# Usage: dsfull [-r] HOST
+# -r for no reboot.
+
set -eE -o pipefail
-trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
+cleanup() { :; }
+trap 'cleanup; echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
reboot=true
if [[ $1 == -r ]]; then
fi
set -x
+
+cleanup() { pxe-server :; }
+pxe-server fai $host
+
+
if $reboot; then
- ssh $host sudo bash <<'EOF' || [[ $? == 255 ]]
-touch /tmp/keyscript-off
-reboot
-EOF
+ # untested, this caused hang using here doc.
+ ssh $host "touch /tmp/keyscript-off; sudo reboot" ||: &
fi
-pxe-server fai $host
-while ! ssh $host :; do
+pxe-server -a :
+cleanup() { :; }
+
+error=true
+for ((i=0; i<240; i++)); do
+ if timeout -s 9 10 ssh $host :; then
+ error=false
+ break
+ fi
sleep 5
done
+if $error; then
+ echo "$0: error: timeout"
+ exit 1
+fi
dsremote $host