Lmn 72 - Postsync bei linuxclients funktionslos

Hallo,

wir haben das Problem, dass nach dem Update der Lösung auf lmn7.2 offenbar der Postsync-Mechanismus auf den Linuxclients nicht mehr funktioniert.

In der Datei /var/log/postsync.log tauchen zwar keine Fehler auf, aber Dateien werden keine Übertragen.

Hier die Logdatei irgendeines Schulclients:

POSTSYNC BEGIN

20240313-1441

Hostname: a009-spc02
Raum: a009
Patchcache: /linuxmuster-client/serverpatches
Hostgruppe:
Patchclass: 2022-mint204

  • getting patchfiles
  • patching local files
    • patching common to /mnt
    • patching a009 to /mnt
      Executing: /mnt/postsync.d/00-lcst-fix-initrd
  • fixing initrd links
    …done.
    Executing: /mnt/postsync.d/01-lcst-setlocalpasswords
  • patching password hashes: linuxadmin, done
    …done.
    Executing: /mnt/postsync.d/02-lcst-patch-sshd-config
    …done.
    Executing: /mnt/postsync.d/03-lcst-fix-fstab
  • fixing fstab: root: /dev/nvme0n1p2, data: /dev/nvme0n1p5, swap: /dev/nvme0n1p
    4, done
    …done.
    Executing: /mnt/postsync.d/04-lcst-generate-hosts
  • fixing hostsdone
    …done.
    Executing: /mnt/postsync.d/09-lcst-fix-permissions
  • fixing permissions
    • /root/.ssh
      cups:
    • /etc/cups/ppd/*
    • /etc/cups/printers.conf*
    • /etc/sudoers.d/veracrypt
    • /home/linuxadmin
    • done
      …done.
POSTSYNC END

Konkret heißt das: Die Dateien die z.B. unter /srv/linbo/linuxmuster-client/2022-mint204/common/etc liegen, tauchen auf dem Client nicht auf.

Unter der Lösung lmn7.1 hat das noch funktioniert.

Hat jemand sowas auch schon mal gehabt, oder eine Idee dazu? Wo könnte man sonst noch nachsehen? Und ja, die Patchklasse im Universal Postsync-Skript stimmt mit dem Verzeichnispfad überein.

Viele Grüße
Thomas

Huhu :slight_smile:
Hast du ne postsync datei in dem image-Verzeichnis, wo auch die qcow Datei liegt?

LG J

Hallo Thomas,

vorsicht: da hat sich was geändert.
Während vorher die postsync Dateien so heißen mußten:
imagename.cloop.postsync

so müssen sie beim neuen linbo so heißen:
imagename.postsync

In die Falle war ich auch getreten.

Allerdings wurde das natürlich nicht „einfach so“ gemacht, sondern es gab ein Grund: die differentiellen Images.

Ich kontrollier jetzt noch, ob das in der upgradeanweisung für das linbo 4.1 auf 4.2 drin steht: sonst müssen wir das noch ergänzen.

LG

Holger

Hallo zusammen,

danke für die schnelle Unterstützung.

Zunächst mal noch ein paar Infos zum Systemstand:

WELCOME TO LINUXMUSTER.NET 7.2 - production
█████ █████ Donnerstag, 14 März 2024, 06:38:38
███ ███
███ ███ Uptime…: 2 days, 18h38m00s
█████ █████ Memory…: 1627/16008MB (10.16%)
███ ███ IP Internal…: 10.0.0.1
███ IP External…: auch hier steht was
█████
███
███ ███ linuxmuster.net packages:
█████ █████ -Base…: 7.2.3-0
███ ███ -Linbo…: 4.2.13-0
███ ███ -WebUI…: 7.2.44
█████ █████ -Sophomorix…: 3.92.1-3
███ ███

Hier das Verzeichnis des Images:

root@system:~# ll /srv/linbo/images/2023-08-09-mint/
total 15686120
-rw-rw-r-- 1 root root 4821 Mär 13 11:08 2023-08-09-mint.postsync
-rw-rw-r-- 1 root root 16061322240 Sep 18 11:46 2023-08-09-mint.qcow2
-rw-rw-r-- 1 root root 115 Mär 13 11:08 2023-08-09-mint.qcow2.desc
-rw-rw-r-- 1 root root 167 Mär 13 11:08 2023-08-09-mint.qcow2.info
-rw------- 1 root root 4178 Sep 18 11:49 2023-08-09-mint.qcow2.macct
-rw-rw-r-- 1 root root 1225612 Sep 18 11:47 2023-08-09-mint.qcow2.torrent
drwxr-xr-x 2 root root 4096 Mär 11 08:05 backups/

Also die Dateien sind alle da wo sie sein sollen. In der postsync ist auch das entsprechende universelle Postsync-Skript hinterlegt. Also an sich müsste es tun und bis vor kurzem gab es damit auch keinerlei Probleme.

Wir sind schon in den Sommerferien auf die qcow-Images umgestiegen. Die Schule wurde mit neuen Rechnern ausgestattet und die kamen mit dem alten Linbo nicht mehr klar. Das vollständige Upgrade auf lmn7.2 erfolgte dann in den Faschingsferien.

Viele Grüße
Thomas

Hallo Thomas,

… das sieht alles richtig aus.
Ich habe zwei Gedanken zum nichtausführen des postsyncs:

  1. zuviele „-“ im Dateinamen: irgend wann war da mal was mit dem Imagenamen.
    Das köntest du schnell testen, indem du es in mint.qcow2 umbenennst.
    Da linbo das alte Image sowiso mit timestamp im UNterverzeichnis backups/TIMESTAMP/ sichert ist ein eigenes timestampbenennen eigentlich nicht nötig (aber klar: jeder darf seine gewohnten Abläufe weiterverwenden)

  2. Problem im postsync selbst.
    Du könntest, wenn du willst, mal meinen postsync versuchen: das läuft bei mir mit linbo 4.2.13
    Das ist die aus meinem produktivsystem: ich bin nicht da für „schön“, das Ding lebt dort seit vielen Jahren, deswegen ist die wirklich nicht hübsch: funktioniert aber bei mir …
    Du darfst sie gerne „geradeziehen“ :slight_smile:

echo "##### focal linuxmuster POSTSYNC BEGIN #####"
     
    # IP-Adresse des Server
    SERVERIP="10.16.1.1"
#    SERVERIP="$(grep serverid /tmp/dhcp.log | awk -F\' '{ print $2 }')"
    STARTCONF=/cache/start.conf
     
    # Raum feststellen. Dieses Skript geht davon aus
    # dass die Rechner Namen der Form
    # raumname-hostname haben, also z.B. cr01-pc18
    RAUM=$(echo ${HOSTNAME} | cut -d"-" -f1)
    # wenn der string leer ist, raum auf unknown setzen
    if [ "x${RAUM}" == "x" ]; then
        RAUM="unknown"
    fi
     
    # Das Verzeichnis, in dem die Serverpatches
    # local synchronisiert werden.
    PATCHCACHE=/linuxmuster-client/serverpatches
    # UVZ auf dem Server. Mit diesem Variablen kann
    # man verschiedene Images bedienen (was bei linux
    # selten nötig ist)
    PATCHCLASS="focal"
     
    echo ""
    echo "Hostname: ${HOSTNAME}"
    echo "Raum: ${RAUM}"
    echo "Patchcache: ${PATCHCACHE}"
    echo "Patchclass: ${PATCHCLASS}"
    echo ""
     
    # -----------------------------------------
    # Patchdateien auf das lokale Image rsyncen
    # -----------------------------------------
    echo " - getting patchfiles"
     
    # RAUM -> Raumname
    # HOSTNAME -> Rechnername
    # Verzeichnis anlegen, damit es sicher existiert
    mkdir -p /cache/${PATCHCACHE}
    rsync --progress --delete -r "${SERVERIP}::linbo/linuxmuster-client/${PATCHCLASS}" "/cache/${PATCHCACHE}"
     
    echo " - patching local files"
    # zuerst alles in common
    if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/common ]; then
        cp -ar /cache/${PATCHCACHE}/${PATCHCLASS}/common/* /mnt/
    fi
     
    # dann raumspezifisch
    if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/${RAUM} ]; then
        cp -ar /cache/${PATCHCACHE}/${PATCHCLASS}/${RAUM}/* /mnt/
    fi
     
    # dann rechnerspezifisch
    if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/${HOSTNAME} ]; then
        cp -ar /cache/${PATCHCACHE}/${PATCHCLASS}/${HOSTNAME}/* /mnt/
    fi

    #MiniSK-Starter von den meisten Rechnern löschen
#    case $HOSTNAME in
#        admin|rm-le|infgr-le|infkl-le|rlz-01|rlz-02|rlz-03|rlz-04|rlz2-01|rlz2-02|rlz2-03|bk-vor|pcek-vor1|pcek-vor2|ph-vor|spra-01|bio-vor|pcek-le|ges-le) echo "mini_sk placed";;
#	*)  rm /mnt/usr/share/applications/mini_sk.desktop

#    esac

    # -----------------------------------
    # Berechtigungen anpassen, wenn nötig
    # -----------------------------------
    echo " - setting permissions of patched local files"
     
    # printers.conf
    [ -f /mnt/etc/cups/printers.conf ] && chmod 600 /mnt/etc/cups/printers.conf
     
    # .ssh verzeichnis
    chmod 700 /mnt/root/.ssh/
    chmod 600 /mnt/root/.ssh/authorized_keys

    # hostname in /etc/hosts patchen
    sed -i "s/HOSTNAME/$HOSTNAME/g" /mnt/etc/hosts
    sed -i "s/#SERVERIP/$SERVERIP/g" /mnt/etc/hosts

# fstab anpassen, damit Swap- und Root-Partition stimmt
#    ROOT=$(sed ':a;N;$!ba;s/\n/;UMBRUCH;/g' $STARTCONF | sed 's/ //g'|sed 's/\[Partition\]/\n/g' | grep -i 'fstype=ext4' | sed 's/;UMBRUCH;/\n/g' | grep -i 'dev=/' | cut -d'=' -f2 | head -c20 | cut -d"#" -f1)
#    echo "$ROOT"
#    sed -i "s#\#dummyroot#$ROOT#g" /mnt/etc/fstab
#    SWAP=$(sed ':a;N;$!ba;s/\n/;UMBRUCH;/g' $STARTCONF | sed 's/ //g'|sed 's/\[Partition\]/\n/g' | grep -i 'fstype=swap' | sed 's/;UMBRUCH;/\n/g' | grep -i 'dev=/' | cut -d'=' -f2 | head -c20 | cut -d"#" -f1)
#    echo "$SWAP"
#    sed -i "s#\#dummyswap#$SWAP#g" /mnt/etc/fstab

    # ServerName SERVERIP in /etc/cups/client.conf patchen
#    sed -i "s/#SERVERIP/$SERVERIP/g" /mnt/etc/cups/client.conf
    
    # /etc/sudoers.d/linuxmuster-client-truecrypt rechte
#    chmod 440 /mnt/etc/sudoers.d/linuxmuster-client-veracrypt
    # Besitzverhältnisse für linuxadmin reparieren
    chown -R 1000:1000 /mnt/home/linuxadmin
#    chown -R 1001:1001 /mnt/home/linuxuser
#    chmod 600 /mnt/etc/NetworkManager/system-connections/LMGintern.nmconnection
#    rm -r /mnt/home/linuxmadmin/.cache/*
#    rm  /mnt/etc/cron.d/shutdown
# Timeset unter ubuntu erzwingen beim systemstart in /etc/rc.local
# ist im Image per postsync aber nur bei mobi drin HIB Jun2023
# hier setzt linbo nach Abgleich mit dem server die HWclock (RTC)
ntpd -n -q -p "10.16.1.1" && hwclock --systohc -u &


    echo "##### POSTSYNC END #####"

… ach: mir ist nochwas eingefallen: die Rechte im UNterverzeichnis /srv/linbo/linuxmuster-client/ …

LG

Holger

Hallo Holger,

wars alles nicht. Du hast mich trotzdem auf die richtige Spur gebracht.
Ich hab mir mein Postsync-Skript nochmal ganz genau angesehen.
In meinem Postsync-Skript wurde für der Wert für SERVERIP durch eine Funktion ${siaddr} zugewiesen. Offenbar hatte diese Variable keine gültigen Wert mehr. Durch Ersetzen der Variable mit dem festen Wert der IP-Adresse funktioniert jetzt wieder alles.

Viele Grüße
Thomas