blob: 45b5c3379dff5bf18467d713b483674d3ee7c221 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
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
|