Revision 19 vom 2022-09-18 20:51:03

Nachricht löschen

Diskless Workstation Server (bullseye)

Installation

Das Debian Edu Minimalsystem disklserver.intern installieren wir über die PXE-Installationsumgebung von Debian Edu / Skolelinux. Die Vorbereitung der VM Instanz werden hier für libVirt bzw. Ganeti beschrieben.

Die VM fährt hoch und bootet über PXE ins iPXE Bootmenü. Hier bitte den 64bit Installer auswählen.

Es startet der Debian (Edu) Installer im grafischen Modus:

Konfiguration

Nach dem Neustart der VM disklserver.intern sollte der Hostname des gestarteten Systems auf disklserver.intern gesetzt sein. Wird stattdessen ein Hostname angezeigt, der die MAC-Adresse der primären NIC des Systems enthält, hat die Eintragung des Systems in GOsa² nicht funktioniert. Bevor man weiter fortfahren kann, muss dieser Fehler behoben werden.

Zum aktuellen Zeitpunkt (Debian Edu 11.2 Release) kommt es bei der Installation eines Minimal-Profils zu einem Fehler. Es fehlt das DEB-Paket libpam-krb5. Dies muss nachinstalliert werden (vergl. Debian bug #1002299):

apt-get install libpam-krb5

Um als Admin-User (bzw. allgemein als LDAP-User) bei Anmeldung System eine Verbindung zum $HOME-Verzeichnis auf tjener.intern zu erhalten, muss eine /etc/krb5.keytab Datei auf disklserver.intern kopiert werden (welche die Principals für host/disklserver.intern und nfs/disklserver.intern enthält. Dies erfolgt über folgenden Befehlsaufruf:

root@disklserver:~# /usr/share/debian-edu-config/tools/copy-host-keytab 
Passwort für root@INTERN: 
disklserver.intern.keytab                                            100%  324     9.0KB/s   00:00    
root@disklserver:~# 

Danach sollte es möglich sein, sich mit einem LDAP-Benutzerkonto an disklserver.intern via Login TTY od. SSH einzuloggen.

Fine-Tuning der VM-Einstellungen

Paket-Quellen für ITZkS aktivieren

Für den Diskless-Workstation-Server gibt es ein eigenes Overlay-Paket, welches aus dem IT-Zukunft Schule Projekt-APT-Repository installiert wird:

root@disklserver:~# editor /etc/apt/sources.list.d/itzks.list

"""
deb http://packages.it-zukunft-schule.de/debian bullseye main contrib non-free
"""

root@disklserver:~#  apt-get --allow-insecure-repositories update && apt-get install itzks-keyring && apt-get update
root@disklserver:~#  apt-get install itzks-systems-common

Bei der Installation von itzks-systems-common wird das Kürzel der Schule / des Schulkundens abgefragt. Diese Kürzel sind im Paket hinterlegt. Es besteht die Möglichkeit, ein Kürzel für die eigene Schule zu beantragen. Bitte dafür Kontakt mit Mike Gabriel vom IT-Zukunft Schule Projekt aufnehmen.

Nach der Installation von itzks-systems-common dann folgenden Befehl aufrufen:

root@disklserver:~# itzks-systems.do_preseed
Preseeding ocsinventory-agent/tag to <SCHOOL>
Preseeding ocsinventory-agent/method to http
Preseeding ocsinventory-agent/server to inventory.it-zukunft-schule.de
Silently running dpkg-reconfigure on package ocsinventory-agent ... 
DONE.

Software nachinstallieren

Die weitere Software wird über die Installation des Meta- und Config-Pakets itzks-systems-disklserver installiert:

root@disklserver:~# sudo apt-get install itzks-systems-disklserver 

System konfigurieren

  1. Login als root

  2. Standard-Editor festlegen (an der Unix-Console)

    $ update-alternatives --config editor

    Hier vim.basic auswählen.

  3. Das Programm Midnight Commander starten (Kommando: mc):

    • F9 drücken
    • Optionen -> Konfiguration: [x] Internen Editor benutzen

    • Optionen -> Einstellungen speichern

    • F10: Midnight Commander beenden
  4. 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
    • mit "OK" bestätigen
    • F10: Editor beenden

Boot-Verzögerung bei Stromausfall

Debian Edu Systeme setzen beim Systemstart einen erreichbaren Hauptserver voraus. Für Debian Edu Server-VMs ergibt sich die Anforderung einer Boot-Verzögerung, die z.B. bei Stromausfall dafür sorgt, dass der Haupt-Server nach Neustart aller Systeme verfügbar ist.

Anstelle aufwendiger VM-Host Skripte wird eine Startverzögerung durch ein hohes Timeout im Bootloader GRUB erwirkt.

<user>@disklserver:/# diff -u /etc/default/grub.orig /etc/default/grub
--- /etc/default/grub.orig      2012-08-31 16:06:51.000000000 +0200
+++ /etc/default/grub   2012-08-31 16:06:59.000000000 +0200
@@ -2,7 +2,7 @@
 # /boot/grub/grub.cfg.
 
 GRUB_DEFAULT=0
-GRUB_TIMEOUT=5
+GRUB_TIMEOUT=600
 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
 GRUB_CMDLINE_LINUX_DEFAULT="quiet"
 GRUB_CMDLINE_LINUX=""

Danach muss die Konfigurationsänderung übernommen werden:

$ sudo update-grub

Nur Admin-User und Junior-Admins dürfen sich auf DISKLSERVER einloggen

Schul-Admins und IT-Dienstleister:innen tragen wir in der LDAP-Gruppe admins ein. Junior-Admins (z.B. Schüler:innen einer Computer-AG) tragen wir in der Gruppe jradmins ein.

/!\ Wichtig: Der Diskless Workstation Server darf ein Login nur für Dienstleister, Schul-Admins und Junior-Admins erlauben. Hierfür müssen die Dateien /etc/security/access.conf und /etc/pam.d/sshd angepasst werden:

--- /etc/security/access.conf.orig
+++ /etc/security/access.conf
@@ -120,3 +120,6 @@
 #
 # All other users should be denied to get access from all sources.
 #- : ALL : ALL
+
++ : admins jradmins root : ALL
+- : ALL : ALL

--- /etc/pam.d/sshd.orig        2012-07-30 17:51:12.000000000 +0200
+++ /etc/pam.d/sshd     2012-07-30 17:51:26.000000000 +0200
@@ -15,7 +15,7 @@
 
 # Uncomment and edit /etc/security/access.conf if you need to set complex
 # access limits that are hard to express in sshd_config.
-# account  required     pam_access.so
+account  required     pam_access.so
 
 # Standard Un*x authorization.
 @include common-account

Puppet Agent

Wie jede Maschine in einem ITZkS-basierten Debian Edu Netzwerk, wird auf faiserver.intern wird Puppet verwaltet. Hierzu muss der Agent einmalig ausgeführt werden:

$ sudo -i
$ http_proxy= https_proxy= puppet agent --test

Danach muss auf tjener.intern eine Freischaltung (Signierung) des Host(-Zertifikats) durchgeführt werden:

$ sudo puppet ca sign faiserver.intern

Abschließend nochmal den Puppet Agent durchlaufen lassen und den Dienst auch aktivieren:

$ sudo -i
$ http_proxy= https_proxy= puppet agent --test
$ puppet agent --enable
$ systemctl enable --now puppet

DLW Chroot bereitstellen

Speicherplatz für DLW Chroot bereit stellen

Zunächst muss der für das Diskless Workstation Chroot Image vorgesehene Festplattenplatz vorbereitet werden:

root@disklserver:~# fdisk /dev/sdb # eine Partition: sdb1, Partitionstyp: 8e
root@disklserver:~# pvcreate /dev/sdb1
root@disklserver:~# vgextend vg_system /dev/sdb1
root@disklserver:~# lvcreate vg_system -n srv -L 60G
root@disklserver:~# mkfs.ext4 /dev/vg_system/srv

Jetzt noch einen Eintrag in /etc/fstab anlegen:

--- /etc/fstab.orig     2012-07-31 13:31:19.000000000 +0200
+++ /etc/fstab  2012-07-31 13:34:46.000000000 +0200
@@ -10,6 +10,7 @@
 /dev/mapper/vg_system-root   /             ext4    errors=remount-ro 0       1
 # /boot was on /dev/vda1 during installation
 UUID=<blkid-/boot>           /boot         ext4    defaults        0       2
+/dev/mapper/vg_system-srv    /srv          ext4    defaults        0       2 
 /dev/mapper/vg_system-usr    /usr          ext4    defaults        0       2
 /dev/mapper/vg_system-var    /var          ext4    defaults        0       2
 /dev/mapper/vg_system-swap_1 none          swap    sw              0       0

... und zuletzt das Dateisystem mounten (unter der Voraussetzung, dass /srv keine Daten enthält):

root@disklserver:~# sudo mount /srv

Das Management der Diskless Workstations erfolgt mit dem Tool LTSP.

Das DLW Chroot wird zentral gepflegt und per Skript auf die DLW Server in den versch. Schulen übertragen. Das Chroot wird wahlweise nächtlich per rsync oder einmalig von einem zentralen Host auf den Schulserver synchronisiert. Die einmalige Bereitstellung des jeweils aktuellen DLW Images erfolgt auf Nachfrage. Das regelmäßige Update (meist zu Debian Point-Releases) erfolgt nur kostenpflichtig.

Das DLW Chroot wird im Ordner /srv/ltsp/dlw+bullseye+amd64 bereit gestellt. Das DLW Chroot kann so wie es ist mittels LTSP startbar gemacht werden.

DLW Chroot via LTSP startbar machen

Desweiteren sind einige weitere manuelle Schritte nötig, um das DLW Chroot über PXE starbar zu machen.

Zunächst muss die NFS-Server Konfiguration von debian-edu-config deaktiviert werden. Hierfür müssen alle Zeilen in /etc/exports.d/edu.exports auskommentiert werden. Danach den NFS Kernel Server neustarten:

$ sudo invoke-rc.d nfs-kernel-server restart

Danach müssen folgende LTSP Befehle ausgeführt werden:

$ sudo ltsp ipxe
$ sudo ltsp kernel
$ sudo ltsp initrd
$ sudo ltsp nfs

DLW Squashfs Image

Es empfiehlt sich wegen der besseren Performanz, das DLW Chroot zu einem Squashfs Image umzuwandeln und dann das DLW Squashfs Image per PXE zu starten und nicht das DLW Chroot selbst.

Das Squashfs-Image (und auch die Aktualisierung der PXE-Umgebung) kann mit dem Skript itzks-update-disklserver-squashfs-images erfolgen:

$ itzks-update-disklserver-squashfs-images
Running: mount -t tmpfs -o mode=0755 tmpfs /srv/tmp/tmp.b3kQRsMM76/tmpfs
Running: mount -t overlay -o upperdir=/srv/tmp/tmp.b3kQRsMM76/tmpfs/0/up,lowerdir=/srv/ltsp/dlw+amd64+bullseye,workdir=/srv/tmp/tmp.b3kQRsMM76/tmpfs/0/work /srv/tmp/tmp.b3kQRsMM76/tmpfs /srv/tmp/tmp.b3kQRsMM76/root/
Trying to acquire package management lock: /srv/ltsp/dlw+amd64+bullseye/var/lib/dpkg/lock
Cleaning up dlw+amd64+bullseye before mksquashfs...
Replacing /srv/tmp/tmp.b3kQRsMM76/root/etc/ssh/ssh_host_ecdsa_key
Replacing /srv/tmp/tmp.b3kQRsMM76/root/etc/ssh/ssh_host_ed25519_key
Replacing /srv/tmp/tmp.b3kQRsMM76/root/etc/ssh/ssh_host_rsa_key
Generating a RSA private key
..................+++++
.............................................................................................................................................................................................+++++
writing new private key to '/srv/tmp/tmp.b3kQRsMM76/root/etc/ssl/private/ssl-cert-snakeoil.key'
-----
Parallel mksquashfs: Using 4 processors
Creating 4.0 filesystem on /srv/ltsp/images/dlw+amd64+bullseye.img.tmp, block size 131072.
[========/                                                                                                ]  73160/855010   8% 

Der Vorgang (Squashfs Image bauen) dauert relativ lange und sollte ggf. in einem screen-Terminal ausgeführt werden.

Das Skript itzks-update-disklserver-squashfs-images aktualisiert am Ende auch die PXE-Startumgebung via LTSP, so dass nach Ausführen des Skripts das DLW Squashfs Image sofort zur Verfügung steht.

Diskless Workstations via PXE anbieten

Schließlich muss das Booten als Diskless Workstation über PXE via LDAP angeboten werden. Hierfür muss folgendes LDAP-Snippet nach LDAP importiert werden:

dn: cn=diskless-workstation,cn=10.0.0.0,cn=intern,cn=dhcp,cn=tjener,ou=servers,[========/                                                                                                ]  73160/855010   8% ou=systems,dc=skole,dc=skolelinux,dc=no
dhcpStatements: next-server disklserver
cn: diskless-workstation
objectClass: top
objectClass: dhcpGroup
objectClass: dhcpOptions