X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=pxe-server;h=78e25a6b9fd0de1a8771d7b0c6871525be5d2532;hb=137ffae7de84a51c4b438ccf2fb50f5571f522a6;hp=692ffbbc62f34eec05fe5be2ccb8541030146be1;hpb=9553b1b421623b7c51b0b0ad1fe860efc017745c;p=automated-distro-installer diff --git a/pxe-server b/pxe-server index 692ffbb..78e25a6 100755 --- a/pxe-server +++ b/pxe-server @@ -18,7 +18,12 @@ [[ $EUID == 0 ]] || exec sudo -E "${BASH_SOURCE[0]}" "$@" -x="$(readlink -f "$BASH_SOURCE")"; source "${x%/*}/bash-trace" +readonly this_file="$(readlink -f -- "${BASH_SOURCE[0]}")" +script_dir="${this_file%/*}" +# shellcheck source=./bash-trace +source "${script_dir}/bash-trace" +cd $script_dir +PATH="$PATH:$PWD" usage() { @@ -30,7 +35,10 @@ not general purpose, it has code specific to dhcp servers I run. Without TYPE, disable server and fai server. In that case, HOST is only needed for fsf office network. -HOST A hostname known to the dhcp server, or default for all. +HOST Only do dhcp pxe for HOST. The hostname must be known to the dhcp + server to target its mac. Use "default" for all hosts. + Required in fsf office environment. + TYPE One of arch, parabola, plain, fai. -a Don't setup pxe, just Wait for 2 dhcp acks, then disable the pxe @@ -39,7 +47,7 @@ TYPE One of arch, parabola, plain, fai. after the 2nd. I can't remember exactly why this caused a problem, but I'm hoping the sleep will take care of it. -d Don't alter dhcp config. Only make sense for fai type, and on network - other than home or fsf. + other than home or fsf, when using fai-cd, or pxe-kexec. -k Pass -k to myfai-chboot. -r Don't redeploy fai config. For example, if there is a different host that is mid-install. @@ -90,10 +98,10 @@ dhcp=true redep=true acks=2 wait=false -fsf=false +fsf_office=false case $HOSTNAME in - x3|kw) fsf=true ;; + x3|kw) fsf_office=true ;; esac chboot_args=() @@ -137,10 +145,14 @@ esac if $wait && ! $dhcp; then - echo "$0: error -w conflicts with -d, choose one or other" + echo "$0: error -w conflicts with -d, choose one or other" >&2 exit 1 fi +if $fsf_office && [[ ! $host ]]; then + echo "$0: at fsf_office, provide HOST arg" >&2 + exit 1 + fi if [[ $host && $host != default ]]; then host_tag="tag:$host," @@ -178,14 +190,14 @@ EOF } ack-wait() { - if $fsf; then + if $fsf_office; then wait_cmd="ssh tarantula.office.fsf.org tail -n0 -f /var/log/syslog" else wait_cmd="ssh cmc logread -f" fi wait_count=$1 if [[ $host ]]; then - if $fsf; then + if $fsf_office; then host_regex=" $(getent hosts kw | awk '{print $1}' | sed 's/\./\\./g')" else host_regex=" $host" @@ -204,7 +216,7 @@ ack-wait() { set-pxe() { $dhcp || return 0 - if $fsf; then + if $fsf_office; then if [[ ! $cmd ]]; then e "removing pxe for $host on tarantula" ssh tarantula.office.fsf.org bash -e </dev/null ||: + m myfai-chboot &>/dev/null ||: fi fi