Hallo zusammen
was muss man tun um postsync mit einem Linuxclient zu nutzen?
Ist das „universelle postsync-script“ schon dabei? Als Vorlage? Nimmt man noch das „alte“ Paket der 6.2 ?
Grüße Rainer
Hallo zusammen
was muss man tun um postsync mit einem Linuxclient zu nutzen?
Ist das „universelle postsync-script“ schon dabei? Als Vorlage? Nimmt man noch das „alte“ Paket der 6.2 ?
Grüße Rainer
Hallo Rainer,
was muss man tun um postsync mit einem Linuxclient zu nutzen?
Ist das „universelle postsync-script“ schon dabei? Als Vorlage? Nimmt
man noch das „alte“ Paket der 6.2 ?
nimm einfach das postsync Script aus dem default.cloop Paket …
Da ist auch die linuxmuster-client Struktur dabei.
LG
Holger
Wo liegt das? Ich hab das universelle per copy&pasta aus der Dokuseite, aber es waere einfacher wenn das irgendwo schon auf der Platte liegen wuerde. Ein fast leeres liegt ja schon in examples.
Hallo Harry,
nimm einfach das postsync Script aus dem default.cloop Paket … Da ist auch die linuxmuster-client Struktur dabei.
Wo liegt das? Ich hab das universelle per copy&pasta aus der Dokuseite,
aber es waere einfacher wenn das irgendwo schon auf der Platte liegen
wuerde. Ein fast leeres liegt ja schon in examples.
hier:
https://web.semgym-karlsruhe.de/nextcloud/s/a5pNgXw7tjrtEs5
LG
Holger
Glaub im Code fuer das Universelle fehlt ein „fi“ am Ende.
https://docs.linuxmuster.net/de/latest/clients/postsync/postsync-patchclasses.html
Danke, wieso liegt das nicht mit auf der Platte?
Edith: Problem gefunden, da wird noch die sshd_config geschrieben.
@baumhof: da ist in root noch ein .ssh-Ordner, der die authorized_key patched, ist das so gewuenscht?
Ich nutzt den root-Account noch um auf die Desktoprechner zu kommen.
Nutzt jemand diese Skripte bzw. den Ordner? Bei mir wird swap wieder nicht richtig gepatcht bzw. eine hartkodierte fstab mit SDAs reinkopiert.
Ich vermute (!) Du patchst die fstab aus historischen Gruenden noch per postsync-Reinkopieren fuer jeden Raum einzeln oder ich mach irgendwas falsch.
Hallo Harry,
@baumhof https://ask.linuxmuster.net/u/baumhof: da ist in root noch
ein .ssh-Ordner, der die authorized_key patched, ist das so gewuenscht?
Ich nutzt den root-Account noch um auf die Desktoprechner zu kommen.
da einfach deinen key reinlegen: dann kommst du immer per root und ssh
auf die linuxclients: ich find das super praktisch.
LG
Holger
Tach Holger,
aber nur von der 10.32.1.1
Gruss Harry
Nachdem ich mit dem universellen Postsyncskript jede Menge Zeit vergurkt habe, hier ein paar Erkenntnisse.
Frage: Ist das universelle Postsyncskript nur fuer die Gurus gedacht? Dann sollte es aus der Doku raus, Einsteiger werden naemlich so ordentlich auf die Schnauze fliegen.
Es scheint mir sinnvoll, dieses in einen example-Ordner auf dem Server zu hinterlegen mit ein paar Kommentaren in der ersten Zeile bzgl. der Fallstricke, ich hab hier naemlich mittlerweile mehrere Versionen davon und weiss nicht mehr genau, welche aktuell ist.
Das Tauschen unter der Hand hier ist aus meiner Sicht sehr fehleranfaellig.
Gruss Harry
Hallo Harry,
- die Vorlage von Holger tut soweit, allerdings sind einige Dinge
hartkodiert, sprich die Server-IP ist die 10.32.1.1, sshd_config
laesst nur von dieser SSH-Sitzungen zu, man muss also in einigen
Dateien nach Konfigurationen suchen, die sich als Tretminen erweisen
koennen, dabei versteckte Ordner (.ssh) nicht vergessen.
war da nicht eine txt Datei dabei in der steht, was wo angepaßt werden muss?
Es scheint mir sinnvoll, dieses in einen example-Ordner auf dem Server
zu hinterlegen mit ein paar Kommentaren in der ersten Zeile bzgl. der
Fallstricke, ich hab hier naemlich mittlerweile mehrere Versionen davon
und weiss nicht mehr genau, welche aktuell ist.Das Tauschen unter der Hand hier ist aus meiner Sicht sehr fehleranfaellig.
damit hast du natürlich recht: nur hat sich in den letzten 3 Jahren
niemand gefunden, der das „Paket“, also diese Feature, ordentlich betreut.
Alles was es da gibt ist die von dir gefundene Doku und die von mir
verschickte Vorlage …
LG
Holger
Die ist tatsaechlich da.
Wäre doch ein guter Moment sich dem ganzen anzunehmen, da ein ordentliches Debian Paket zu bauen und es auch ordentlich zu dokumentieren!
Bin seit vorhin auf Schiermonnikoog und weit weg vom Thema, hab mir aber eben tatsaechlich nicht verkneifen koennen die Doku zur Debianpaketierung zu lesen.
Hallo Harry,
heißt das jetzt das du dich der Paketierung annimmst?
Vorab ein ganz großer Dank, wenn es denn so ist.
Beste Grüße
Thorsten
Tag Thorsten,
wenn ich den ganzen Haufen vor mir abgearbeitet habe, dann schau ich mir das an, versprechen kann ich aber nichts, denn ich bin gefuehlt gerade ziemlich am Anschlag.
Erstmal muss unser Netz umgestellt sein und unzaehlige Leichen im Keller geborgen werden, sowohl in der Schule als auch privat.
Gruss Harry
Hallo Harry,
hättest du mir deine Version von postsync, damit ich die mit meiner und der von der Dokuseite abgleiche?
Vielen Dank.
Gerne auch per PM, wenn da mehr Sachen drinstehen, die du hier nicht öffentlich posten willst.
Vg, Tobias
Abend Tobias,
unseres tut wohl auch nur teilweise, ich such das mal raus.
Ich hab das von Holger oben genommen, der Link tut aber nicht mehr.
Gruss Harry
Denke das ist das Gleiche wie in der Doku.
Das Patchen des Hostnames tut bei uns nicht hab ich vorgestern gemerkt, scheint aber weiter nicht zu jucken.
echo "##### POSTSYNC BEGIN #####"
LOG=/mnt/var/log/postsync.log
echo "##### POSTSYNC BEGIN #####" > $LOG
NOW=$(date +%Y%m%d-%H%M)
echo $NOW | tee -a $LOG
# IP-Adresse des Servers für LINBO 4.1
SERVERIP=$LINBOSERVER
# Die Hostgruppe des aktuellen Rechners wird mit $HOSTGROUP abgerufen
# Raum feststellen. Dieses Skript geht davon aus
# dass die Rechner Namen der Form
# raumname-hostname haben, also z.B. cr01-pc18
RAUM=${HOSTNAME%%-*}
# wenn der string leer ist, raum auf unknown setzen
if [ "x${RAUM}" == "x" ]; then
RAUM="unknown"
fi
# UVZ für die Patches auf dem Server. Mit dieser Variablen
# kann man verschiedene Patches, z.B. für unterschiedliche
# Linux-Versionen bereitstellen.
# Wenn man hier $HOSTGROUP einträgt, erhält jede Rechnerklasse
# ein eigenes Patchklassenverzeichnis auf dem Server.
# Damit kann man verschiedene Patchklassen mit derselben cloop-Datei
# bedienen, wenn man das benötigt.
PATCHCLASS="jammy_mint"
# Das Verzeichnis, in dem die Serverpatches
# im lokalen Clientcache synchronisiert werden.
PATCHCACHE=/linuxmuster-client/serverpatches
echo "" | tee -a $LOG
echo "Hostname: ${HOSTNAME}" | tee -a $LOG
echo "Raum: ${RAUM}" | tee -a $LOG
echo "Patchcache: ${PATCHCACHE}" | tee -a $LOG
echo "Hostgruppe: ${HOSTGROUP}" | tee -a $LOG
echo "Patchclass: ${PATCHCLASS}" | tee -a $LOG
echo "" | tee -a $LOG
# -----------------------------------------
# Patchdateien auf das lokale Image rsyncen
# -----------------------------------------
echo " - getting patchfiles" | tee -a $LOG
# RAUM -> Raumname
# HOSTNAME -> Rechnername
# Verzeichnis anlegen, damit es sicher existiert
mkdir -p /cache/${PATCHCACHE}
rsync --delete --progress -r "${SERVERIP}::linbo/linuxmuster-client/${PATCHCLASS}" "/cache/${PATCHCACHE}" | tee -a $LOG
echo " - patching local files" | tee -a $LOG
# common: Bekommen alle clients der Patchklasse
# files
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/common ]; then
echo " - patching common to /mnt" | tee -a $LOG
cp -ar /cache/${PATCHCACHE}/${PATCHCLASS}/common/* /mnt/ | tee -a $LOG
fi
# tarpacks
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/common/tarpacks ]; then
echo " - unpacking tarpacks from common/tarpacks to /mnt" | tee -a $LOG
for pack in /cache/${PATCHCACHE}/${PATCHCLASS}/common/tarpacks/*; do
echo " - unpacking: $pack" | tee -a $LOG
tar xvzf $pack -C /mnt | tee -a $LOG
done
fi
# Raum: Nur die Clients des Raums
# files
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/${RAUM} ]; then
echo " - patching ${RAUM} to /mnt" | tee -a $LOG
cp -ar /cache/${PATCHCACHE}/${PATCHCLASS}/${RAUM}/* /mnt/ | tee -a $LOG
fi
# tarpacks
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/${RAUM}/tarpacks ]; then
echo " - unpacking tarpacks from ${RAUM}/tarpacks to /mnt" | tee -a $LOG
for pack in /cache/${PATCHCACHE}/${PATCHCLASS}/${RAUM}/tarpacks/*; do
echo " - unpacking: $pack" | tee -a $LOG
tar xvzf $pack -C /mnt | tee -a $LOG
done
fi
# Host: Nur der Rechner
# files
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/${HOSTNAME} ]; then
echo " - patching ${HOSTNAME} to /mnt" | tee -a $LOG
cp -ar /cache/${PATCHCACHE}/${PATCHCLASS}/${HOSTNAME}/* /mnt/ | tee -a $LOG
fi
# tarpacks
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/${HOSTNAME}/tarpacks ]; then
echo " - unpacking tarpacks from ${HOSTNAME}/tarpacks to /mnt" | tee -a $LOG
for pack in /cache/${PATCHCACHE}/${PATCHCLASS}/${HOSTNAME}/tarpacks/*; do
echo " - unpacking: $pack" | tee -a $LOG
tar xvzf $pack -C /mnt | tee -a $LOG
done
fi
# Hook, um eigene Skripte auszuführen
if [ -d /mnt/postsync.d ]; then
for SCRIPT in /mnt/postsync.d/*
do
chmod 755 $SCRIPT
echo "Executing: $SCRIPT" | tee -a $LOG
#$SCRIPT > /dev/null 2>&1
$SCRIPT | tee -a $LOG
echo " ...done." | tee -a $LOG
done
rm -rf /mnt/postsync.d
# wenn es /mnt/tarpacks gibt - löschen
rm -rf /mnt/tarpacks
# hostname in /etc/hosts patchen
sed -i "s/HOSTNAME/$HOSTNAME/g" /mnt/etc/hosts
sed -i "s/#SERVERIP/$SERVERIP/g" /mnt/etc/hosts
# Zeitstempel letzter sync hinterlegen
echo $NOW > /mnt/lastsync
echo "##### POSTSYNC END #####" | tee -a $LOG
# Folgende Zeile stellt sicher, dass bei Änderungen des Postsync-Scriptes auf dem Server
# diese auch auf den Client übertragen werden.
# Achtung: Imageverzeichnis und Imagename sind anzupassen
rsync --progress -r $LINBOSERVER::linbo/images/jammy_mint/jammy_mint.postsync /cache/
fi
ok. kein wunder… Danke!
das „fi“ gehört vor die Zeile mit #wenn es /mnt/tarpacks gibt - löschen
Das mit den Hostname ersetzen funktioniert nur dann wenn du in deinen Verzeichnisbaum: linuxmuster-client/$HOSTGROUP/common|raum|hostname/etc/hosts so eine Datei ablegst, die „HOSTNAME“ an den richtigen Stellen hat…
/etc/fstab hab ich früher noch selbst gepatcht, das macht LINBO jetzt für mich - für das ROOT= und daher verzichte ich darauf in den Verzeichnisbaum ein /etc/fstab zu legen - weil das postsync das kopiert und das bereits gepatchte fstab wieder überschreibt.
Ich hatte bei mir grundsätzlich noch „export LOG“ usw. für alle Variablen, ich glaube, weil ich statt „$SCRIPT | tee -a $LOG“ dann source $SCRIPT | tee -a $LOG
bislang hatte. ICh weiß nicht mehr genau wieso…
VG, Tobias