Unterschiede zwischen den Revisionen 2 und 16 (über 14 Versionen hinweg)
Revision 2 vom 2022-09-16 19:34:24
Größe: 12501
Kommentar:
Revision 16 vom 2022-09-18 20:54:11
Größe: 17680
Kommentar:
Gelöschter Text ist auf diese Art markiert. Hinzugefügter Text ist auf diese Art markiert.
Zeile 17: Zeile 17:
  * ''Wichtig:'' Nach der Installation von {{{disklserver.intern}}}, aber vor dem ersten Start muss der Server im Debian Edu / Skolelinux Netzwerk bekannt gemacht werden:   * ''Wichtig:'' Nach der Installation von {{{faiserver.intern}}}, aber vor dem ersten Start muss der Server im Debian Edu / Skolelinux Netzwerk bekannt gemacht werden:
Zeile 19: Zeile 19:
      * System (Typ: Server) anlegen für {{{disklserver.intern}}}
      * Beschreibung: {{{Diskless Workstations Image Server}}}
      * System (Typ: Server) anlegen für {{{faiserver.intern}}}
      * Beschreibung: {{{FAI-Installations-Server}}}
Zeile 27: Zeile 27:
=== Konfiguration === === Manuelle Konfiguration ===
Zeile 39: Zeile 39:
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
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 {{{faiserver.intern}}} kopiert werden (welche die Principals für {{{host/faiserver.intern}}} und {{{nfs/faiserver.intern}}} enthält. Dies erfolgt über folgenden Befehlsaufruf:

{{{

root@faiserver:~# /usr/share/debian-edu-config/tools/copy-host-keytab
Zeile 64: Zeile 64:
root@disklserver:~# editor /etc/apt/sources.list.d/itzks.list root@faiserver:~# editor /etc/apt/sources.list.d/itzks.list
Zeile 70: Zeile 70:
root@disklserver:~# apt-get --allow-insecure-repositories update && apt-get install itzks-keyring && apt-get update
root@disklserver:~# apt-get install itzks-systems-common
root@faiserver:~# apt-get --allow-insecure-repositories update && apt-get install itzks-keyring && apt-get update
root@faiserver:~# apt-get install itzks-systems-common
Zeile 80: Zeile 80:
root@disklserver:~# itzks-systems.do_preseed root@faiserver:~# itzks-systems.do_preseed
Zeile 93: Zeile 93:
root@disklserver:~# sudo apt-get install itzks-systems-faiserver root@faiserver:~# sudo apt-get install itzks-systems-faiserver
Zeile 122: Zeile 122:
<user>@disklserver:/# diff -u /etc/default/grub.orig /etc/default/grub <user>@faiserver:/# diff -u /etc/default/grub.orig /etc/default/grub
Zeile 168: Zeile 168:
=== Vorbereitungen für FAI-Installationsumgebung für Deian Edu === === Automatische Konfiguration via Puppet Agent ===

Wie jede Maschine in einem ITZkS-basierten Debian Edu Netzwerk, wird auf {{{faiserver.intern}}} wird Puppet verwaltet. D.h. alle weiteren Konfigurationsschritte sind mittels Puppet realisiert.

Hierzu muss der Puppet 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
}}}

=== FAI-Umgebung erstellen ===
Zeile 175: Zeile 195:
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 90G
root@disklserver:~# mkfs.ext4 /dev/vg_system/srv
root@faiserver:~# fdisk /dev/sdb # eine Partition: sdb1, Partitionstyp: 8e
root@faiserver:~# pvcreate /dev/sdb1
root@faiserver:~# vgextend vg_system /dev/sdb1
root@faiserver:~# lvcreate vg_system -n srv -L 90G
root@faiserver:~# mkfs.ext4 /dev/vg_system/srv
Zeile 198: Zeile 218:
root@disklserver:~# sudo mount /srv
}}}

=== FAI-Umgebung erstellen ===

Im DEB-Paket {{{debian-edu-fai+itzks}}} (welches als Abhängigkeit installiert wurde) befindet sich die Konfigurationsdatei {{{/etc/debian-edu/faiinstall.conf}}} und das Skript {{{debian-edu-faiinstall}}}.

Zunächst muss die Konfigurationsdatei angepasst werden:{{{
root@faiserver:~# mount /srv
}}}

==== FAI-Installer-Konfiguration anpassen ====

Im DEB-Paket {{{debian-edu-fai}}} (bzw. {{{debian-edu-fai+itzks}}} (welches als Abhängigkeit installiert wurde) befindet sich die Konfigurationsdatei {{{/etc/debian-edu/debian-edu-fai.conf}}} und das Skript {{{debian-edu-faiinstall}}}.

Als erstes muss die Konfigurationsdatei angepasst werden:{{{
Zeile 279: Zeile 299:
'''WICHTIG:''' Die Kennwörter für {{{root}}} und {{{localuser}}} müssen als Hashes hinterlegt werden (nicht im Klartext!!!):{{{
echo "yoursecrectpassword" | mkpasswd -m md5 -s
}}}

==== SSH-Zugriff zwischen FAI-Server und FAI-Client ====

Zwei verschiedene Arten von SSH-Zugriff müssen jetzt noch konfiguriert werden:

  1. SSH-Zugriff auf Geräte, die gerade mit FAI installiert werden
  1. SSH-Zugriff vom Client, auf denen der FAI-Installer gerade läuft, zum FAI-Server, um Installations-Logs nach Ende der Installation wegzuschreiben

===== SSH-Zugriff auf FAI-Clients ermöglichen =====

Alle FAI-Server Admins können per SSH auf ein Gerät zugreifen, welches gerade mit FAI installiert wird.

Dies funktioniert in unserem Setup meist automatisch:

  * Puppet hinterlegt die SSH-Schlüssel der Admins in {{{faiserver:/root/.ssh/authorized_keys}}}
  * In {{{/etc/debian-edu/fai/debian-edu-fai.TEMPLATE/nfsroot.conf.in}}} den Eintrag {{{SSH_IDENTITY=/root/.ssh/authorized_keys}}} auskommentieren.
  * FAI's {{{fai-make-nfsroot}}} Skript übernimmt dann das Kopieren der {{{/root/.ssh/authorized_keys}}} in das nfsroot des FAI-Installers

===== SSH-Zugriff für das Wegschreiben von Installations-Logs =====

Auf dem FAI-Server wurde mit der Installation des Pakets {{{debian-edu-fai}}} (bzw. {{{debian-edu-fai+itzks}}}) das Systemkonto {{{fai}}} erstellt.

Man muss sicherstellen, dass der User {{{fai@faiserver.intern}}} sich ohne Passwortabfrage per SSH auf {{{fai@faiserver.intern}}} einloggen kann. Sobald dieses funktioniert, übernimmt die Funktion {{{setup_ssh}}} im FAI-Kommando {{{fai-make-nfsroot}}} die Aufgabe, das FAI nfsroot so einzurichten das root@fai-client sich auf fai@faiserver.intern einloggen kann.

{{{
root@faiserver:~# su - fai
fai@faiserver:~$ mkdir .ssh
fai@faiserver:~$ ssh-keygen
# WICHTIG: den SSH private Key nicht mit einer Passphrase schützen!!!
fai@faiserver:~$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
}}}

Da der {{{fai}}} Systembenutzer auf dem FAI-Server als primäre Gruppe {{{nogroup}}} eingetragen hat, funktioniert das passwortlose Login noch nicht vollständig. Es müssen noch manuell Dateirechte angepasst werden.

{{{
fai@faiserver:~$ cd .ssh/
fai@faiserver:~/.ssh$ ls -al
insgesamt 24
drwxrwxr-x 2 fai nogroup 4096 18. Sep 11:31 .
drwx------ 3 fai nogroup 4096 18. Sep 11:27 ..
-rw-rw-r-- 1 fai nogroup 574 18. Sep 11:31 authorized_keys
-rw------- 1 fai nogroup 2610 18. Sep 11:29 id_rsa
-rw-r--r-- 1 fai nogroup 574 18. Sep 11:29 id_rsa.pub
-rw-r--r-- 1 fai nogroup 444 18. Sep 11:31 known_hosts
fai@faiserver:~/.ssh$ chmod go-rwx authorized_keys
fai@faiserver:~/.ssh$ chmod go-rwx .
}}}

Nach den Änderungen der Dateirechte sollte das .ssh-Verzeichnis wie folgt aussehen:

{{{
fai@faiserver:~/.ssh$ ls -al
insgesamt 24
drwx------ 2 fai nogroup 4096 18. Sep 11:31 .
drwx------ 3 fai nogroup 4096 18. Sep 11:27 ..
-rw------- 1 fai nogroup 574 18. Sep 11:31 authorized_keys
-rw------- 1 fai nogroup 2610 18. Sep 11:29 id_rsa
-rw-r--r-- 1 fai nogroup 574 18. Sep 11:29 id_rsa.pub
-rw-r--r-- 1 fai nogroup 444 18. Sep 11:31 known_hosts
}}}

Zuletzt muss das Login noch getestet werden. Dieser Schritt ist wichtig, weil hierbei auf der richtige Eintrag für faiserver.intern in der Datei {{{~fai/.ssh/known_hosts}}} abgelegt wird:{{{
fai@faiserver:~$ ssh -lfai faiserver.intern
The authenticity of host 'faiserver.intern (10.0.2.3)' can't be established.
ECDSA key fingerprint is SHA256:<HOST-FINGERPRINT>.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'faiserver.intern,10.0.2.3' (ECDSA) to the list of known hosts.

Linux faiserver.intern 5.10.0-18-amd64 #1 SMP Debian 5.10.140-1 (2022-09-02) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
fai@faiserver:~$
}}}
Zeile 283: Zeile 383:
Dann muss die FAI-Installationsumgebung erstellt werden:{{{ Jetzt endlich kann die FAI-Installationsumgebung in {{{/srv/fai/nfsroot.debian-edu-fai/}}} erstellt werden. Hierfür muss einfach folgendes Skript ausgeführt werden:{{{
Zeile 286: Zeile 386:

Wichtig ist, dass das Skript ohne Fehler ausgeführt wird. Falls nicht, muss das berichtete Problem behoben werden, ggf. sollte man {{{/srv/fai/nfsroot.debian-edu-fai/}}} wieder entfernen und das Skript erneut aufrufen.

FAI-Installations-Server (bullseye)

Installation

Das Debian Edu Minimalsystem faiserver.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:

  • Installationsprofil: Minimal
  • Automatische Partitionierung: ja
  • Paketerfassung verwenden: Ja
  • Kennwort für root festlegen
  • Wichtig: Nach der Installation von faiserver.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 faiserver.intern

      • Beschreibung: FAI-Installations-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)

Manuelle Konfiguration

Nach dem Neustart der VM faiserver.intern sollte der Hostname des gestarteten Systems auf faiserver.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.5 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 faiserver.intern kopiert werden (welche die Principals für host/faiserver.intern und nfs/faiserver.intern enthält. Dies erfolgt über folgenden Befehlsaufruf:

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

Danach sollte es möglich sein, sich mit einem LDAP-Benutzerkonto an faiserver.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 faiserver.intern durch. Hierfür muss die VM herunter gefahren werden und die VM-Konfiguration angepasst werden:

    • zweite Festplatte hinzufügen (Name für libVirt: faiserver.intern_sdb)

    • VM wieder anschalten und in der VM weiterarbeiten

Paket-Quellen für ITZkS aktivieren

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

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

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

root@faiserver:~#  apt-get --allow-insecure-repositories update && apt-get install itzks-keyring && apt-get update
root@faiserver:~#  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@faiserver:~# 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-faiserver installiert:

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

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>@faiserver:/# 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 FAISERVER 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

Automatische Konfiguration via Puppet Agent

Wie jede Maschine in einem ITZkS-basierten Debian Edu Netzwerk, wird auf faiserver.intern wird Puppet verwaltet. D.h. alle weiteren Konfigurationsschritte sind mittels Puppet realisiert.

Hierzu muss der Puppet 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

FAI-Umgebung erstellen

Speicherplatz für FAI-Umgebung und APT-Paket-Cache bereit stellen

Zunächst muss zusäzlicher Festplattenplatz vorbereitet werden:

root@faiserver:~# fdisk /dev/sdb # eine Partition: sdb1, Partitionstyp: 8e
root@faiserver:~# pvcreate /dev/sdb1
root@faiserver:~# vgextend vg_system /dev/sdb1
root@faiserver:~# lvcreate vg_system -n srv -L 90G
root@faiserver:~# 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@faiserver:~# mount /srv

FAI-Installer-Konfiguration anpassen

Im DEB-Paket debian-edu-fai (bzw. debian-edu-fai+itzks (welches als Abhängigkeit installiert wurde) befindet sich die Konfigurationsdatei /etc/debian-edu/debian-edu-fai.conf und das Skript debian-edu-faiinstall.

Als erstes muss die Konfigurationsdatei angepasst werden:

--- debian-edu-fai.conf 2022-09-16 20:48:00.244886307 +0200
+++ debian-edu-fai.conf.mine    2022-09-16 21:33:13.031132688 +0200
@@ -26,10 +26,10 @@
 #fai_logserver="$(hostname -f)"
 
 # FAI system user:
-#fai_loguser='fai'
+fai_loguser='fai'
 
 # APT mirror to be used...
-#mirrorurl=http://deb.debian.org/debian
+mirrorurl=http://deb.debian.org/debian
 
 #... or alternatively, an 'apt-cacher-ng' on the gateway IP:
 #mirrorurl=http://10.0.0.1:3142/debian
@@ -40,18 +40,18 @@
 #ftp_proxy=http://10.0.0.1:3142
 
 # ...or alternatively, if squid-deb-proxy is running on the faiserver.
-#http_proxy="http://faiserver:8000"
-#ftp_proxy="http://faiserver:8000"
+http_proxy="http://faiserver:8000"
+ftp_proxy="http://faiserver:8000"
 
 # Where to place tftp config folders/files... (default: /srv/tftp)
 #tftpdir=/srv/tftp
 
 # List of Debian versions (as codenames) to build FAI installers for (default: same codename
 # as the FAI installer host's Debian version).
-#codenames="bullseye bookworm"
+codenames="bullseye"
 
 # For generating the default boot entry in iPXE boot menu (default: first name in codenames, see above)
-#default_codename="bookworm"
+default_codename="bullseye"
 
 # FAI installation chroot architecture (default: auto-detected from the FAI installer host).
 #
@@ -59,21 +59,21 @@
 # make sure to run dpkg --add-architecture i386 on the FAI installer host before running
 # the 'debian-edu-faiinstall' script (otherwise, debootstrap will run as qemu-debootstrap
 # and that will be reallllyyyy slow).
-#archs="amd64 i386"
+archs="amd64"
 
 # For generating the default boot entry in iPXE boot menu (default: first arch in archs, see above)
-#default_arch="i386"
+default_arch="amd64"
 
 # Password for the root account of FAI-installed devices (and for the installer chroot).
 # Use '$ echo "yoursecrectpassword" | mkpasswd -m md5 -s' to create the pwhash.
 # If not specified, the host's root password will be used...
-#rootpw='<pwhash-for-root-account>'
+rootpw='<rootpw>'
 
 # For a local user account that can get created
 # Use '$ echo "yoursecrectpassword" | mkpasswd -m md5 -s' to create the pwhash.
 # If not specified, no local user account will be added to the FAI-installed system.
-#localuser='<localuser>'
-#localuserpw='<pwhash-for-localuser-account>'
+localuser='lwuser'
+localuserpw='<userpw>'
 
 # In case you want to provision FAI installed devices
 # with system wide WiFi settings.
@@ -82,4 +82,5 @@
 #wifi_passphrase='<edu-wifi-passphrase-in-cleartext-sorry>'
 
 # school tag (short name for school)
-#school_tag='SKOLE'
+school_tag='<SCHULE>'

WICHTIG: Die Kennwörter für root und localuser müssen als Hashes hinterlegt werden (nicht im Klartext!!!):

echo "yoursecrectpassword" | mkpasswd -m md5 -s

SSH-Zugriff zwischen FAI-Server und FAI-Client

Zwei verschiedene Arten von SSH-Zugriff müssen jetzt noch konfiguriert werden:

  1. SSH-Zugriff auf Geräte, die gerade mit FAI installiert werden
  2. SSH-Zugriff vom Client, auf denen der FAI-Installer gerade läuft, zum FAI-Server, um Installations-Logs nach Ende der Installation wegzuschreiben

SSH-Zugriff auf FAI-Clients ermöglichen

Alle FAI-Server Admins können per SSH auf ein Gerät zugreifen, welches gerade mit FAI installiert wird.

Dies funktioniert in unserem Setup meist automatisch:

  • Puppet hinterlegt die SSH-Schlüssel der Admins in faiserver:/root/.ssh/authorized_keys

  • In /etc/debian-edu/fai/debian-edu-fai.TEMPLATE/nfsroot.conf.in den Eintrag SSH_IDENTITY=/root/.ssh/authorized_keys auskommentieren.

  • FAI's fai-make-nfsroot Skript übernimmt dann das Kopieren der /root/.ssh/authorized_keys in das nfsroot des FAI-Installers

SSH-Zugriff für das Wegschreiben von Installations-Logs

Auf dem FAI-Server wurde mit der Installation des Pakets debian-edu-fai (bzw. debian-edu-fai+itzks) das Systemkonto fai erstellt.

Man muss sicherstellen, dass der User fai@faiserver.intern sich ohne Passwortabfrage per SSH auf fai@faiserver.intern einloggen kann. Sobald dieses funktioniert, übernimmt die Funktion setup_ssh im FAI-Kommando fai-make-nfsroot die Aufgabe, das FAI nfsroot so einzurichten das root@fai-client sich auf fai@faiserver.intern einloggen kann.

root@faiserver:~# su - fai 
fai@faiserver:~$ mkdir .ssh 
fai@faiserver:~$ ssh-keygen
# WICHTIG: den SSH private Key nicht mit einer Passphrase schützen!!! 
fai@faiserver:~$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

Da der fai Systembenutzer auf dem FAI-Server als primäre Gruppe nogroup eingetragen hat, funktioniert das passwortlose Login noch nicht vollständig. Es müssen noch manuell Dateirechte angepasst werden.

fai@faiserver:~$ cd .ssh/
fai@faiserver:~/.ssh$ ls -al 
insgesamt 24
drwxrwxr-x 2 fai nogroup 4096 18. Sep 11:31 .
drwx------ 3 fai nogroup 4096 18. Sep 11:27 ..
-rw-rw-r-- 1 fai nogroup  574 18. Sep 11:31 authorized_keys
-rw------- 1 fai nogroup 2610 18. Sep 11:29 id_rsa
-rw-r--r-- 1 fai nogroup  574 18. Sep 11:29 id_rsa.pub
-rw-r--r-- 1 fai nogroup  444 18. Sep 11:31 known_hosts
fai@faiserver:~/.ssh$ chmod go-rwx authorized_keys 
fai@faiserver:~/.ssh$ chmod go-rwx .

Nach den Änderungen der Dateirechte sollte das .ssh-Verzeichnis wie folgt aussehen:

fai@faiserver:~/.ssh$ ls -al 
insgesamt 24
drwx------ 2 fai nogroup 4096 18. Sep 11:31 .
drwx------ 3 fai nogroup 4096 18. Sep 11:27 ..
-rw------- 1 fai nogroup  574 18. Sep 11:31 authorized_keys
-rw------- 1 fai nogroup 2610 18. Sep 11:29 id_rsa
-rw-r--r-- 1 fai nogroup  574 18. Sep 11:29 id_rsa.pub
-rw-r--r-- 1 fai nogroup  444 18. Sep 11:31 known_hosts

Zuletzt muss das Login noch getestet werden. Dieser Schritt ist wichtig, weil hierbei auf der richtige Eintrag für faiserver.intern in der Datei ~fai/.ssh/known_hosts abgelegt wird:

fai@faiserver:~$ ssh -lfai faiserver.intern
The authenticity of host 'faiserver.intern (10.0.2.3)' can't be established.
ECDSA key fingerprint is SHA256:<HOST-FINGERPRINT>.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'faiserver.intern,10.0.2.3' (ECDSA) to the list of known hosts.

Linux faiserver.intern 5.10.0-18-amd64 #1 SMP Debian 5.10.140-1 (2022-09-02) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
fai@faiserver:~$ 

FAI-Installationsumgebung erstellen

Jetzt endlich kann die FAI-Installationsumgebung in /srv/fai/nfsroot.debian-edu-fai/ erstellt werden. Hierfür muss einfach folgendes Skript ausgeführt werden:

$ debian-edu-faiinstall

Wichtig ist, dass das Skript ohne Fehler ausgeführt wird. Falls nicht, muss das berichtete Problem behoben werden, ggf. sollte man /srv/fai/nfsroot.debian-edu-fai/ wieder entfernen und das Skript erneut aufrufen.

FAI-Installer via PXE anbieten

Schließlich muss der FAI-Installer über PXE via LDAP angeboten werden. Hierfür muss folgendes LDAP-Snippet nach LDAP importiert werden:

dn: cn=fai-installation,cn=10.0.0.0,cn=intern,cn=dhcp,cn=tjener,ou=servers,ou=systems,dc=skole,dc=skolelinux,dc=no
dhcpStatements: next-server faiserver
cn: fai-installation
objectClass: top
objectClass: dhcpGroup
objectClass: dhcpOptions

IT-Zukunft Schule: Technik/Installation/VM/FAIServer/bullseye (zuletzt geändert am 2022-11-21 22:48:46 durch MikeGabriel)