== 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|libVirt]] bzw. [[../ganeti|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: * Installationsprofil: Minimal * Automatische Partitionierung: ja * Paketerfassung verwenden: Ja * Kennwort für root festlegen * ''Wichtig:'' Nach der Installation von {{{disklserver.intern}}}, aber vor dem ersten Start muss der Server im Debian Edu / Skolelinux Netzwerk bekannt gemacht werden: * GOsa² auf TJENER: * System (Typ: Server) anlegen für {{{disklserver.intern}}} * Beschreibung: {{{Diskless Workstations Image Server}}} * IP: {{{10.0.2.9}}} * ermittelte MAC-Adresse eintragen (vergl. Info-Seite bzgl. VM-Instanz Setup, s.o.) * DHCP (10.0.0.0-Netz) * DNS aktivieren * NIS Netgroups Eintrag in Gruppe: {{{server-hosts}}} (hierfür muss der Systemeintrag in GOsa² erstmal angelegt worden sein, danach nochmal die NIS Netgroup nachbearbeiten) === 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. [[https://bugs.debian.org/1002299|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 ==== * Nach der Installation und dem ersten Start führen wir die folgenden Änderungen an der VM-Konfiguration von {{{disklserver.intern}}} durch. Hierfür muss die VM herunter gefahren werden und die VM-Konfiguration angepasst werden: * zweite Festplatte hinzufügen (Name für libVirt: {{{disklserver.intern_sdb}}}) * VM wieder anschalten und in der VM weiterarbeiten ==== 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 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}}} 1. Standard-Editor festlegen (an der Unix-Console){{{ $ update-alternatives --config editor }}}Hier {{{vim.basic}}} auswählen. 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 * 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.{{{ @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 }}} === Vorbereitungen für Diskless Workstation Chroot === ==== 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= /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 }}} === DLW Chroot bereitstellen === 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, es empfiehlt sich aber wegen der besseren Performanz, das Chroot zu einem Squashfs Image umzuwandeln und dann das Squashfs Image per PXE zu starten und nicht das 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. ==== DLW Chroot via LTSP startbar machen ==== Aktuell sind einige 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 }}} ==== 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 }}}