== Basis-Installation Virtualisierungs-Server (Debian stretch) ==

<<TableOfContents(3)>>

=== Vorbereitungen ===

Vor der Basisinstallation des ersten Virtualisierungs-Servers muss die [[Technik/Installation/InternetUplink|Internet-Anbindung]] der Schule entsprechend der IT-Zukunft Schule [[Technik/Netzwerk|Netzwerktopologie]] eingerichtet werden. Desweiteren muss eine Backbone-Switch für das Backbone-Netz (siehe [[Technik/Installation/InternetUplink|Internet-Anbindung]]) bereit stehen, welche mit dem Backbone-VLAN des Internet-Routers verbunden ist.

Im Backbone-Netz ist standardmäßig ein DHCP-Server aktiv (auf Router für die Internet-Anbindung), so dass angeschlossene Systeme (neue aufzusetzende Server, Notebooks von System-Admins, etc.) sofort Zugriff auf das Internet bekommen können.

=== Basisinstallation ===

Der Virtualisierungs-Server stellt den virtuellen Maschinen Teile der Hardware standardisiert zur Verfügung. Der folgende Abschnitt beschreibt eine allgemeine Installation des ersten/zentralen Virtualiserungs-Servers. Die Details der Installation unterscheiden sich dabei je nach Hardware-Ausstattung des Servers und Nutzungsszenario (Größe der Schule, etc.). In den entsprechenden Textpassagen werden Beispielwerte angegeben, die an die Gegebenheiten der jeweiligen Schule individuell angepasst werden.

=== Installation starten ===

 * Ein startfähiges Medium mit [[ http://www.debian.org/CD/http-ftp/|Debian GNU/Linux stable]] (CD-ROM oder USB Stick) erstellen. Um Verwechslungen vorzubeugen: An dieser Stelle verwenden wir noch nicht Debian Edu / Skolelinux, das kommt erst bei der Installation der virtuellen Maschinen zum Einsatz.

 * Vom erstellten Medium den Virtualisierungs-Server booten.

 * Die folgende Antworten in den angezeigten Menüs auswählen: ''Install'', ''German'', ''Deutschland'' und ''Deutsch''

 * Die Netzwerkschnittstelle mit Zugang zum Internet angeben (in Klammern markiert durch die Bezeichnung ''Copper''). Der Server sollte so verkabelt sein, dass {{{eth1}}} für das Backbone-Netzwerk genutzt wird.

=== Rechnernamen und erste Benutzer anlegen ===

 * Rechnername: {{{virt-man-01}}} (weitere Virtualisierungs-Server werden durchnummeriert: {{{virt-man-02}}}, {{{virt-man-03}}}, etc.)
 * domain: {{{backbone}}}
 * Passwort für den Benutzer: {{{root}}} eintragen. ''Wichtig!!! Passwort notieren!!!''
 * Vor- und Zuname für neuen/ersten Benutzer: {{{Local Administrator}}}
 * Benutzername für lokalen Administrator: {{{locadm}}}
 * Passwort für den lokalen Administrator eintragen und bestätigen. ''WICHTIG!!! Passwort notieren!!!''
 * Im nachfolgenden Dialog des Debian Installers werden die Festplatten partitioniert.
    * Partitionierungs-Methode: manuell
    * root-Dateisystem: 20Gb, als Software RAID-1 (/dev/md0) konfigurieren 
    * Swap-Space: Arbeitsspeicher +2Gb auf alle schnellen Platten gleichmäßig verteilen
       * optional: Arbeitsspeicher +2Gb auf die zwei langsamen Platten gleichmäßig verteilen
    * Raid-Device (/dev/md0) als ext4-Dateisystem formatieren, Einhängepunkt:  ,,/"
 * Software-Installationsprofil ({{{tasksel}}}): minimale Installation, zusätzlich SSH-Server auswählen

FixMe: Wenn der Server nach der Installation nicht bootet, sollte nach einem {{{grub-install /dev/sdX}}}, {{{grub-install /dev/sdY}}} UND {{{grub-install /dev/md0}}} sowie einem anschließenden {{{update-grub}}} alles funktionieren.

=== Grundeinrichtung ===

 1. Nachdem die Grundinstallation abgeschlossen ist als {{{locadm}}} einloggen.

 1. Den User {{{locadm}}} in die Gruppe {{{sudo}}} eintragen. Eingabe mit {{{root}}}-Kennwort bestätigen. __Danach:__ ausloggen und wieder als {{{locadm}}} einloggen. {{{
$ su -c "adduser locadm sudo"
}}}

 1. Der Posix-Gruppe {{{sudo}}} den Aufruf des Kommandos {{{sudo}}} ohne Eingabe des Passworts erlauben:{{{
locadm@virt-man-01:~# su -c "diff -u /etc/sudoers.orig /etc/sudoers"
--- /etc/sudoers.orig	2012-07-27 12:43:30.000000000 +0200
+++ /etc/sudoers	2012-07-27 12:42:07.000000000 +0200
@@ -19,6 +19,6 @@
 # Allow members of group sudo to execute any command
 # (Note that later entries override this, so you might need to move
 # it further down)
-%sudo ALL=(ALL) ALL
+%sudo ALL=(ALL) NOPASSWD: ALL
 #
 #includedir /etc/sudoers.d
}}}

 1. Den Benutzer {{{locadm}}} seine {{{sudo}}}-Rechte wahrnehmen lassen:{{{
$ newgrp sudo
}}}

 1. Nachinstallation von Software:{{{
$ sudo apt-get install mc vim
}}}

 1. Server Neustart durchführen

 1. Nach der Installation {{{vim}}} als Editor in den Debian "Alternatives" festlegen.{{{
sudo update-alternatives --config editor
}}}

 1. Das Programm Midnight Commander starten (Kommando: {{{mc}}}):
   * F9 drücken
   * Optionen -> Konfiguration: [x] Internen Editor benutzen
   * Optionen -> Einstellungen speichern
   * F10: Midnight Commander beenden
 1. Den Midnight Commander Editor (Kommando: {{{mcedit}}}) starten:
   * F9 drücken
   * Menüpunkt: ''Optionen -> Allgemein''
   * "Backspace durch Tabs" auswählen
   * "Tabs mit Leerzeichen auffüllen" auswählen
   * "Return rückt automatisch ein" abwählen
   * F10: Editor beenden

 1. In {{{/etc/apt/sources.list}}} für alle Varianten {{{contrib}}} und {{{non-free}}} hinzufügen.

=== Aktualisierung gezielter Pakete via ITZkS-Repository ===

Zusätzliche APT-Quellen werden hinzugefügt:{{{
$ editor /etc/apt/sources.list.d/itzks.list

"""
deb http://packages.it-zukunft-schule.de/debian stretch main
"""

$ apt-get update && apt-get install itzks-keyring && apt-get update
}}}

Aus diesen Quellen werden die folgenden Pakete installiert:{{{
$ apt-get install itzks-systems-common
$ sudo itzks-systems.do_preseed
$ apt-get update
$ apt-get install x2go-keyring 
# /etc/apt/sources.list.d/geogebra.list auskommentieren
# /etc/apt/sources.list.d/multimedia.list auskommentieren 
$ apt-get update
$ apt-get purge avahi-daemon
$ apt-get install itzks-systems-virtman (postfix nur lokal, emails an locadm)
}}}

LightDM und LXDE-Desktop installieren{{{
sudo apt-get install lxde lightdm
}}}

=== Installation von X2Go ===

 1. Pakete installieren: {{{x2goserver}}} und {{{x2golxdebindings}}}{{{
$ sudo apt-get install x2goserver x2golxdebindings
}}}

== Einrichtung einer USV ==

Auf virt-man-01 (USV_MASTER):
 1. ssh-keygen als root
 1. /root/.ssh/id_rsa.pub -> /root/.ssh/authorized_keys auf backup-01
 1. die Datei /etc/apcupsd/doshutdown erstellen:{{{
#!/bin/bash

MY_UPS_SLAVES="backup-01"

for host in $MY_UPS_SLAVES; do
    0</dev/null ssh -lroot $host shutdown -h -t 30 now "apcupsd UPS ${2} initiated
shutdown" 1>/dev/null 2>/dev/null
done
}}}

 1.#4 in /etc/apcupsd/apcupsd.conf folgende Änderungen gemacht:{{{
--- a/apcupsd/apcupsd.conf
+++ b/apcupsd/apcupsd.conf
@@ -26,7 +26,7 @@
#     940-1524C, 940-0024G, 940-0095A, 940-0095B,
#     940-0095C, 940-0625A, M-04-02-2000
#
-UPSCABLE smart
+UPSCABLE usb

# To get apcupsd to work, in addition to defining the cable
# above, you must also define a UPSTYPE, which corresponds to
@@ -79,8 +79,8 @@ UPSCABLE smart
# modbus    /dev/tty**       Serial device for use with newest SmartUPS models
#                            supporting the MODBUS protocol.
#
-UPSTYPE apcsmart
-DEVICE /dev/ttyS0
+UPSTYPE usb
+DEVICE

# POLLTIME <int>
#   Interval (in seconds) at which apcupsd polls the UPS for status. This
@@ -135,12 +135,12 @@ ONBATTERYDELAY 6
# If during a power failure, the remaining battery percentage
# (as reported by the UPS) is below or equal to BATTERYLEVEL, 
# apcupsd will initiate a system shutdown.
-BATTERYLEVEL 5
+BATTERYLEVEL 60

# If during a power failure, the remaining runtime in minutes 
# (as calculated internally by the UPS) is below or equal to MINUTES,
# apcupsd, will initiate a system shutdown.
-MINUTES 3
+MINUTES 10

# If during a power failure, the UPS has run on batteries for TIMEOUT
# many seconds or longer, apcupsd will initiate a system shutdown.
@@ -184,7 +184,7 @@ KILLDELAY 0
#  information server. If netstatus is on, a network information
#  server process will be started for serving the STATUS and
#  EVENT data over the network (used by CGI programs).
-NETSERVER on
+NETSERVER off

# NISIP <dotted notation ip address>
#  IP address on which NIS server will listen for incoming connections.
diff --git a/default/apcupsd b/default/apcupsd
index f8de693..b3d0e25 100644
}}}

 1.#5 dann noch apcupsd als "konfiguriert" markieren:{{{
--- a/default/apcupsd
+++ b/default/apcupsd
@@ -2,4 +2,4 @@

# Apcupsd-devel internal configuration
APCACCESS=/sbin/apcaccess
-ISCONFIGURED=no
+ISCONFIGURED=yes
}}}

 1.#6 zuletzt: invoke-rc.d apcupsd restart

== Einrichtung der Virtualisierungs-Software ==

Dieser Vorgang wird separat beschrieben:

  * Virtualisierung mit [[Technik/Installation/VirtServer/Ganeti|Ganeti]]
  * Virtualisierung mit [[Technik/Installation/VirtServer/LibVirt|LibVirt]]