summaryrefslogtreecommitdiffstats
path: root/satellit_installer/satellit_installer
blob: 34a019dc31806116bc366c068b8a8a40a15b5aa8 (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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
#!/bin/bash

# set -x

# This script tries to install a bwLehrpool satellite server in a (hopefully)
# automatic fashion. It is only verified to work on a Debian 7.x distribution.
# While it may work on any recent Debian-derived distribution this is not
# guaranteed in any way.
#
# If there were any errors in running this script do the following steps to
# re-install:
# 1. Un-outcomment the call to purge_install near the end of this script.
# 2. re-run the script; ignore any errors like "ERROR 1045 (28000): Access
#    denied for user 'root'@'localhost'". This is caused by mysql root password
#    mismatch; it will vanish on the second run. purge_install will uninstall
#    the packages given in PACKAGELIST_SERVER _and_ purge their configuration.
# 3. re-run the script again; then the mysql root password will be set to the
#    queried password entry. Then the mysql databases and users will be deleted.
# 4. Out-comment the call to purge_install and run the script again for a clean
#    install.
# This cumbersome way will be remedied in the future.

echo "#"
echo "# bwSuite Server and environment autoinstaller"
echo "#"

case "$1" in
	"-h" | "--help")
		echo "#"
		echo "# Options: -h or --help    for (this) help,"
		echo "#          -V or --version followed by a mandatory version string."
		echo "#"
		echo "# Note: A version string must be given!"
		echo "#"
		echo "# If you need to change any predefined values, take a look into includes/00-variables.inc."
		echo "# and set them there."
		exit
		;;
	"-V" | "--version")
		[ -z "$2" ] && { echo "No version string has been given - exit."; exit 1; }
		export VERSION="$2"
		;;
	*)	echo "# Restarting with --help ..."
		exec $(readlink -f "$0 --help")
		exit 0								# Never reached, but one for the aesthetics!
		;;
esac

# Set and save some environmental variables:
OLDUMASK=$(umask)
OLD_DEBIAN_FRONTEND="$DEBIAN_FRONTEND"

# For other variables see includes/00-variables.inc
export SELF="$(readlink -f "$0")"
export BASEDIR="$(dirname "${SELF}")"

#
#	TRAPPING hierhin!
#

# First, to include includes include them:
echo -n "# Sourcing includes: "
for INCLUDE in "$BASEDIR"/includes/*.inc; do
	echo -n "."
	source "$INCLUDE"
done
echo " ok"

####### Main program #######

system_upgrade					# No harm done even if not necessary

install_packages "$PACKAGELIST_SCRIPT"		# Packages needed for script

# Then, let's download the needed helper files to static_files, as there
# is no sense in commencing if one of these files is missing.
get_files_http
[ "${ERR}" -ne 0 ] && exit 1

setup_dhcp					# dhcp: no dhclient but pump

uninstall_packages mpt-status

prerequisites					# config directory, locales

# query_passwords
set_passwords					# only to be used within certain circumstances -
						# see includes/query_user.

set_version_string				# Writing version string for rc.local-script

preset_mysql_root				# so mysqld keeps quiet when installing

install_packages NOREC "$PACKAGELIST_SERVER"		# Packages needed for server installable without
							# recommended packages, so option NOREC is set.
install_packages RECOM "$PACKAGELIST_WITH_RECOMMENDS"	# Packages where installation of recommended
							# packages is necessary, so opt. RECOM is set.

check_users					# Meet interesting users with uid>=1000 and kill them.
						# user 65534/sync will be ignored.
add_users_groups				# Adding necessary users and groups

import_gpg

sudo_config					# Adding sudo config for user taskmanager

add_mysql_dbs_users				# mysql stuff; adding databases and users
patch_mysql_config				# adding utf8 entries to /etc/mysql/my.cnf

unpack_tar_gz "$BASEDIR/static_files/ftp-config.tar.gz" "-C /"		# $1: tar.gz-file, $2: unpacking to directory

patch_pureftpd_config bwLehrpool bwLehrpool "$MYSQL_BWLEHRPOOL_PASS"	# $1: user, $2: database, $3: Password
check_pureftpd_key							# check pureftp key (and gen. on if necessary)

patch_atftpd_config

patch_lighttpd_config "$WWWDIR"		# $1: lighttpd http root

patch_ldapsearch

write_apt_config

install_bwSuite_server "$DMSDDIR"

install_taskmanager /opt/taskmanager

unpack_tar_gz "$BASEDIR/static_files/openslx.tar.gz" "-C $OPENSLXDIR"
unpack_tar_gz "$BASEDIR/static_files/slx-admin.tar.gz" "-C $WWWDIR/slx-admin"
unpack_tar_gz "$BASEDIR/static_files/ldadp.tgz" "-C $LDADPDIR"
unpack_tar_gz "$BASEDIR/static_files/openslx_tftp.tar.gz" "-C $TFTPDIR"
unpack_tar_gz "$BASEDIR/static_files/syslinux4.tar.gz" "-C $TFTPDIR/v4"
unpack_tar_gz "$BASEDIR/static_files/syslinux6.tar.gz" "-C $TFTPDIR/v6"

install_syncdaemon "$SYNCDAEMONDIR"

# NFS server configuration:
config_nfs

# Samba configuration: User and share
# This is out-commented, as not needed recently
# setup_samba

# Copying a script to configure a static IP
install_config_static_ip

# Set a cronjob to cron.daily which cleans bwlp-* stuff from /tmp if older than 2 days
# and images from /srv/openslx/nfs/temp
install_tmpdelete

# Sometimes a low device timeout has lead to problems. So we set a rule to increase the
# block device timeout (sd*) from 30 to 180 using an udev rule.
set_vmware_device_timeout

# color prompt, aliases
patch_bashrc
# vim config
patch_vim

setup_logging

# This part drops a script and anchors it's execution within root's .profile:
drop_firstrun_script

install_javadaemon
install_pidtree
install_slxlog

set_directory_permissions

# Remove translation from menu etc.
patch_slxadmin

tar -z -c -T /dev/null -f /opt/openslx/empty.tgz

# Activate 'purge_install' here - but be careful! This is for debugging purposes only!
# purge_install

end_message

exit 0