summaryrefslogtreecommitdiffstats
path: root/data
diff options
context:
space:
mode:
authorSimon Rettberg2013-05-22 20:21:31 +0200
committerSimon Rettberg2013-05-22 20:21:31 +0200
commit3c194329504fb4fd0b6874f94a404d4f167a0d6d (patch)
treefca5654ff69b3ba2e3166c5f5f4d6abf6a9b3968 /data
parent[setup_target] Fix for loop that unsets module-variables (diff)
downloadtm-scripts-3c194329504fb4fd0b6874f94a404d4f167a0d6d.tar.gz
tm-scripts-3c194329504fb4fd0b6874f94a404d4f167a0d6d.tar.xz
tm-scripts-3c194329504fb4fd0b6874f94a404d4f167a0d6d.zip
update to setup script
Diffstat (limited to 'data')
-rwxr-xr-xdata/openslx-ng-install88
1 files changed, 84 insertions, 4 deletions
diff --git a/data/openslx-ng-install b/data/openslx-ng-install
index 45b5c337..0e71684e 100755
--- a/data/openslx-ng-install
+++ b/data/openslx-ng-install
@@ -53,6 +53,18 @@ function save_defaults ()
done
}
+function check_password ()
+{
+ [ $# -lt 1 ] && error "No user given to check_password"
+ [ $# -lt 2 ] && error "No password given to check_password"
+ [ ! -r /etc/shadow ] && return 1
+ local correct=$(< /etc/shadow awk -v "user=$1" -F : 'user == $1 {print $2}')
+ local prefix=${correct%"${correct#\$*\$*\$}"}
+ local supplied="$(perl -e "print crypt('$2', '$prefix')")" # el cheapo: do not pass a password containing a single quote ( ' )
+ [ "x$supplied" = "x$correct" ] && return 0
+ return 1
+}
+
# Load "Factory defaults" first
FACTORY_DEFAULTS_FILE="/opt/openslx/server-factory-defaults"
if [ -s "$FACTORY_DEFAULTS_FILE" ]; then
@@ -77,8 +89,29 @@ print "einige Fragen beantwortet werden."
print ""
#
+# ---- Ask if the private key of Uni Freiburg should be accepted for root logins
+#
+if [ ! -s "/root/.ssh/authorized_keys" ] || ! grep "openslx-admin@uni-freiburg.de" "/root/.ssh/authorized_keys" > /dev/null; then
+ print ""
+ print "Soll der Private Key der bwLehrpool-Abteilung in Freiburg für root-Logins auf"
+ print "diesem Server zugelassen werden? Dadurch ist es für die Entwickler aus Freiburg"
+ print "möglich, sich ohne Kenntnis des Passworts als root auf diesem Server einzuloggen."
+ if yesno "Dies vereinfacht die Fernwartung, Fehlerdiagnose und -behebung."; then
+ if mkdir -p "/root/.ssh" \
+ && chmod 0700 "/root/.ssh" \
+ && echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC667v6bIksFcwE6DMFs65ySfjySSn9V44GoN7qzIOUok/fgOsiotq2HJby/cgQxGVKogVmGUDRUqK3lKSqYnDmEigP3aQdleP1NFx6ex/zhEUoHp4VfqfQncSZT1zYE5IGQ9YNERrsDEI0YOZ5Cr+/I3p0bJAbXZM9dk/1Y6VOyMt1ZHXam5VvC6EJnJQzW9uAS69JSezprRsDYH+3NGd/XV/INkOsPIvkLc8rp5rtcdHrq/7NPNqtTCUdChv5F5lNMMHyXlhaM9FjG/DOZ0teKzh8MMe3oUXg/VibqEPZK4zVBKypATlWdv6zODiMrbi4n/Vm9IMA5i/71NW2GOdH openslx-admin@uni-freiburg.de" >> "/root/.ssh/authorized_keys" \
+ && chmod 0600 "/root/.ssh/authorized_keys"; then
+ print "Key erfolgreich hinzugefügt"
+ else
+ error "Fehler beim Hinzufügen des Keys!"
+ fi
+ fi
+fi
+
+#
# ---- Haupt-Adresse (zwecks iPXE) ----
#
+print ""
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"
@@ -116,11 +149,58 @@ done
#
# ---- NFS Share
#
+# Is it a local one?
+print ""
+print "Bereitstellung der VMWare-Images"
+print "Die Clients booten die VMWare-Images von einem NFS-Share. Dieser kann"
+print "entweder auf diesem Server liegen, oder auf einem externen Server mit NFS-Zugang."
+print "Sofern die Images von diesem Server ausgeliefert werden sollen, wird ein"
+print "zusätzlicher SMB-Server installiert, um das Aufspielen neuer Images"
+print "von einem Windows-PC aus zu erleichtern."
+
while true; do
- getinput "Pfad zum NFS Share?" SLX_NFS_PATH
- [[ "$RETVAL" == /* ]] && accept
-done
-print "Fertig. NFS_PATH ist $SLX_NFS_PATH"
+ getinput "Welches Setup ist erwünscht? L = Lokal, E = Extern" SLX_VM_NFS_TYPE
+ # Local Server
+ if [[ "$RETVAL" == L* || "$RETVAL" == l* ]]; then
+ while true; do
+ getinput "Lokaler Speicherort für VM-Images" SLX_VM_PATH
+ if [[ "$RETVAL" != /* ]]; then
+ print "FEHLER: Der Pfad muss absolut sein (mit einem / beginnen)"
+ continue
+ fi
+ mkdir -p "$RETVAL"
+ [ -w "$RETVAL" ] && accept
+ print "FEHLER: Verzeichnis '$RETVAL' nicht beschreibbar."
+ done
+ SLX_VM_NFS="$SLX_LOCAL_ADDR:$SLX_VM_PATH"
+ print "Lokaler VM-NFS-Share erreichbar unter $SLX_VM_NFS"
+ SLX_VM_NFS_TYPE=L
+ break # No accept here as it cannot be nested
+ fi
+ # External Server
+ if [[ "$RETVAL" == E* || "$RETVAL" == e* ]]; then
+ while true; do
+ getinput "Adresse und Pfad des externen NFS-Shares für VM-Images im Format Adresse:Pfad" SLX_VM_NFS
+ echo "$RETVAL" | grep -E '\S+:/\S+' && accept
+ print "FEHLER: Ungültiges NFS-Share-Format: $RETVAL"
+ done
+ print "Externer VM-NFS-Share erreichbar unter $SLX_VM_NFS"
+ SLX_VM_NFS_TYPE=E
+ break # No accept
+ fi
+ print "Ungültige Auswahl '$RETVAL'"
+done # Done setting up VM NFS Server type
+
+#
+# ---- Safety first: make user change root password if it is still the default ----
+#
+if [ "x$1" != "x--test" ] && check_password "root" "openslx-ng"; then
+ print ""
+ print "Aus Sicherheitsgründen sollte das root-Passwort dieses Servers geändert werden."
+ while check_password "root" "openslx-ng" && yesno "Passwort jetzt ändern?"; do
+ passwd
+ done
+fi
SLX_LAST_INVOCATION="$(date)"
save_defaults