change partitioning to use lvm, refactor for fsf server
[automated-distro-installer] / pxe-server
index 692ffbbc62f34eec05fe5be2ccb8541030146be1..5915f96f1931da30cdf4f3ec24f4a6f10ff1f3f5 100755 (executable)
 
 [[ $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, or when using fai-cd.
 -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 <<EOF
@@ -244,7 +256,7 @@ if $set; then
   else
     # This will fail if faiserver is not setup, so ignore any
     # failure and don't bother us about it.
-    myfai-chboot &>/dev/null ||:
+    m myfai-chboot &>/dev/null ||:
   fi
 fi