summaryrefslogtreecommitdiffstats
path: root/data
diff options
context:
space:
mode:
authorSimon Rettberg2013-05-22 16:57:16 +0200
committerSimon Rettberg2013-05-22 16:57:16 +0200
commit9386b86bfa4043222fa2259870f68db13f056cc1 (patch)
tree3ea042ca4cbb26d410b470e20f2db4314360543a /data
parent1. Fix ARCH_TRIPLET for distos that don'T have it. (diff)
downloadtm-scripts-9386b86bfa4043222fa2259870f68db13f056cc1.tar.gz
tm-scripts-9386b86bfa4043222fa2259870f68db13f056cc1.tar.xz
tm-scripts-9386b86bfa4043222fa2259870f68db13f056cc1.zip
(WiP) Setup Script for OpenSLX-NG-Servers
Diffstat (limited to 'data')
-rwxr-xr-xdata/openslx-ng-install127
1 files changed, 127 insertions, 0 deletions
diff --git a/data/openslx-ng-install b/data/openslx-ng-install
new file mode 100755
index 00000000..45b5c337
--- /dev/null
+++ b/data/openslx-ng-install
@@ -0,0 +1,127 @@
+#!/bin/bash
+
+function print ()
+{
+ echo -e "\033[01;29m$@\033[00m"
+}
+
+function error ()
+{
+ echo -e "\033[00;31m$@\033[00m"
+ exit 1
+}
+
+function getinput ()
+{
+ [ $# -ne 2 ] && error "getinput called with wrong parameter count ($@)"
+ CURRENT_VAR="$2"
+ echo -n -e "\033[01;29m$1 [${!CURRENT_VAR}]:\033[00m "
+ read RETVAL
+ [ -z "$RETVAL" ] && RETVAL="${!CURRENT_VAR}"
+}
+
+function accept ()
+{
+ [ -z "$CURRENT_VAR" ] && error "accept called when CURRENT_VAR is empty"
+ eval "$CURRENT_VAR='$RETVAL'"
+ CURRENT_VAR=""
+ break
+}
+
+function deny ()
+{
+ print "Ungültige Eingabe: '$RETVAL'"
+}
+
+function yesno ()
+{
+ while true; do
+ echo -n -e "\033[01;29m$@ [J/n] "
+ read KEYPRESS
+ [ -z "$KEYPRESS" ] && return 0
+ [[ "$KEYPRESS" == J* || "$KEYPRESS" == j* ]] && return 0
+ [[ "$KEYPRESS" == N* || "$KEYPRESS" == n* ]] && return 1
+ print "Bitte mit J oder N antworten"
+ done
+}
+
+function save_defaults ()
+{
+ echo -e "# OpenSLX-NG defaults for this server - saved from a previous run of openslx-install\n# Delete this file if you want to start from scratch" > "$DEFAULTS_FILE"
+ for VARNAME in ${!SLX_*}; do
+ echo "$VARNAME='${!VARNAME}'" >> "$DEFAULTS_FILE"
+ done
+}
+
+# Load "Factory defaults" first
+FACTORY_DEFAULTS_FILE="/opt/openslx/server-factory-defaults"
+if [ -s "$FACTORY_DEFAULTS_FILE" ]; then
+ . "$FACTORY_DEFAULTS_FILE" || error "Factory defaults konnten nicht geladen werden. ($FACTORY_DEFAULTS_FILE)"
+fi
+# Load presets/previously given replies
+DEFAULTS_FILE="/opt/openslx/server-defaults"
+if [ -s "$DEFAULTS_FILE" ]; then
+ . "$DEFAULTS_FILE" || error "Voreinstellungen von vorherigem Scriptdurchlauf konnten nicht geladen werden. Bitte die Datei $DEFAULTS_FILE überprüfen und reparieren oder ggf. löschen."
+ print " *** Voreinstellungen von vorherigem Scriptaufruf ($SLX_LAST_INVOCATION) gefunden"
+ print " *** Diese Einstellungen werden als Standard-Antwort auf alle Fragen"
+ print " angenommen. Um dieses Setup mit den ursprünglichen Standardantworten"
+ print " auszuführen, die Datei $DEFAULTS_FILE löschen."
+ print " *** Das Setup kann mit Strg+C abgebrochen werden."
+ print ""
+fi
+
+print "OpenSLX-NG Server Preview: Setup"
+print ""
+print "Zum erfolgreichen Aufsetzen eines OpenSLX-NG Servers müssen"
+print "einige Fragen beantwortet werden."
+print ""
+
+#
+# ---- Haupt-Adresse (zwecks iPXE) ----
+#
+print "Zum Einrichten der iPXE-Funktionalität muss die IP-Adresse des Servers"
+print "festgelegt werden. Alle Clients werden über diese Adresse bedient."
+print "WICHTIG: Sollte sich die Adresse des Servers ändern, muss dieses Setup"
+print "erneut ausgeführt werden."
+print "Erkannte lokale Adressen:"
+
+LOCAL_ADDRS="$(ip a | grep -E -o '^\s*inet\s+[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | grep -E -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+')"
+echo "$LOCAL_ADDRS"
+
+if [ -z "$SLX_LOCAL_ADDR" ] || [[ $LOCAL_ADDRS != *$SLX_LOCAL_ADDR* ]]; then
+ SLX_LOCAL_ADDR=""
+ for ADDR in $LOCAL_ADDRS; do
+ [[ "$ADDR" == 127.* ]] && continue
+ LAN_IP=$ADDR
+ [[ "$ADDR" == 192.168.* ]] && continue
+ [[ "$ADDR" == 10.* ]] && continue
+ [[ "$ADDR" == 172.* ]] && continue
+ SLX_LOCAL_ADDR=$ADDR
+ done
+ [ -z "$SLX_LOCAL_ADDR" ] && SLX_LOCAL_ADDR=$LAN_IP
+fi
+
+while true; do
+ getinput "Primäre IP-Adresse des Servers" SLX_LOCAL_ADDR
+ # syntax check
+ echo "$RETVAL" | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' > /dev/null || continue
+ if ! ip a | grep -E "^\s*inet\s+$RETVAL/" > /dev/null; then
+ print "Dieser Server scheint kein Interface zu besitzen, welches auf"
+ print "die Adresse $RETVAL konfiguriert ist."
+ yesno "Trotzdem diese Adresse verwenden?" || continue
+ fi
+ accept
+done
+
+#
+# ---- NFS Share
+#
+while true; do
+ getinput "Pfad zum NFS Share?" SLX_NFS_PATH
+ [[ "$RETVAL" == /* ]] && accept
+done
+print "Fertig. NFS_PATH ist $SLX_NFS_PATH"
+
+SLX_LAST_INVOCATION="$(date)"
+save_defaults
+