Vollautomatisches Update + Konfiguration

Rund um die Software von Revolution Pi
Post Reply
dennis.boldt
Posts: 12
Joined: 02 Oct 2019, 14:33

Vollautomatisches Update + Konfiguration

Post by dennis.boldt »

Hallo,

ich will eine Menge von neuen RevPis mit DI-Modul vollautomatisch updaten und konfigurieren. Dabei bin ich auf ein paar "Hürden" gestoßen.

1) aptitude safe-upgrade

Wenn man nun folgendes ausführt...

Code: Select all

sudo aptitude safe-upgrade
... dann kommt folgendes Fenster:
2020-01-26 11_02_17-pi@RevPi30222_ ~.png
2020-01-26 11_02_17-pi@RevPi30222_ ~.png (13.56 KiB) Viewed 10548 times
Diest sorgt dafür, dass das vollautomatische Update hängen bleibt
Fragen:
  • Sollte man das Update einspielen?
  • Kann man das Update "forcen"?
Ich habe nun vor der Ansible-Routine folgendes auf jedem Pi manuell ausgeführt und das Fenster manuell bestätigt:

Code: Select all

 sudo apt-get install --only-upgrade logi-rts
Danach funktioniert das automatische Update.

2) Module aktivieren

Wenn ich

Code: Select all

piTest -d
aufrufe, dann bekomme ich die Meldung:
Module is present, but NOT CONFIGURED!!!
2020-01-26 20_45_35-pi@RevPi30222_ ~.png
2020-01-26 20_45_35-pi@RevPi30222_ ~.png (7.63 KiB) Viewed 10548 times
Frage: Kann man das DI-Modul automatisiert über die Konsole aktivieren, oder nur über das Web-Interface?

Ich würde das auch gerne vollständig automatisiert machen, ohne mich in jeden Pi nochmal einloggen zu müssen.

3) Eingänge des DI-Moduls umbennnen

Frage: Kann man die Eingänge des DI-Moduls automatisiert über die Konsole umbennen, oder nur über das Web-Interface?

Ich würde das auch gerne vollständig automatisiert machen, ohne mich in jeden Pi nochmal einloggen zu müssen.
User avatar
nicolaiB
KUNBUS
Posts: 931
Joined: 21 Jun 2018, 10:33
Location: Berlin
Contact:

Re: Vollautomatisches Update + Konfiguration

Post by nicolaiB »

Hallo Dennis,

Willkommen im Forum!

Frage 1: Du kannst dem Paketmanager den Schalter -y mitgeben, damit er für alle auftretenden Fragen ja als Antwort annimmt.

Frage 2+3: Die Konfiguration erfolgt in der Datei /etc/revpi/config.rsc. Es bietet sich daher an, dir einmalig eine Konfiguration mit Pictory zusammen zu bauen (auch die Namen) und sie dann auf den anderen Pis nur zu kopieren. Die Änderung musst du danach durch den Aufruf von z. B. piTest -x laden. Du kannst die Konfiguration aber auch selbst mit einem Editor deiner Wahl bearbeiten. Alle Einstellungen sind im JSON Format.

Wir nutzen Z.B. zur vollständigen Automatisierung des Deployment und Maintenanceprozesses unserer RevPis das Konfigurationsmanagement Ansible.

Gruß Nicolai
dennis.boldt
Posts: 12
Joined: 02 Oct 2019, 14:33

Re: Vollautomatisches Update + Konfiguration

Post by dennis.boldt »

Hallo Nicolai,

ja, Ansible nutze ich auch.

zu 1) Trotz -y, welches ich bei bauen von Docker-Containern viel verwende, kam leider das blaue Fenster. Ich werde das auf einem weiteren Pi nochmal testen.
zu 2/3) /etc/revpi/config.rsc war der wichtige Hinweis, den ich gebraucht habe. Damit werde ich dann einmal rumspielen.

Viele Grüße
Dennis
dennis.boldt
Posts: 12
Joined: 02 Oct 2019, 14:33

Re: Vollautomatisches Update + Konfiguration

Post by dennis.boldt »

Also,

zu 1)

Die beiden folgenden Kommandos führen weiterhin zu dem blauen Fenster:

Code: Select all

sudo apt-get install -y --only-upgrade logi-rts
sudo apt-get install -y --force-yes --only-upgrade logi-rts

sudo apt-get install -y  --reinstall logi-rts
sudo apt-get install -y --force-yes --reinstall logi-rts
Ich habe die Installation erstmal mittels Ansible auf hold gesetzt:

Code: Select all

sudo apt-mark hold logi-rts
User avatar
lukas
Expert
Posts: 186
Joined: 13 Feb 2017, 10:29

Re: Vollautomatisches Update + Konfiguration

Post by lukas »

Hallo Dennis,

Danke für den Hinweis zu dem apt-get Problem bei logi-rts. Ich hatte in dem preinst Script des Pakets eingebaut, dass der Dialog nur dann erscheint, wenn der Installationsprozess mit einem Terminal verbunden ist ("test -t 1" prüft, ob stdout mit einem tty verbunden ist, siehe /var/lib/dpkg/info/logi-rts.preinst nach Installation der Version 4.3.0-2+revpi1):

Code: Select all

        if [ -t 1 ] ; then
            choice=$(whiptail --nocancel --notags --menu "$msg" 0 0 0 \
                upgrade "Go ahead with upgrade" \
                abort "Abort upgrade" 3>&1 1>&2 2>&3)
            case "$choice" in
                abort)
                    exit 1
                ;;
                *) ;;
            esac
        fi
Die Idee war, dass das Update auf die neue logi-rts Version ohne Dialog durchläuft, wenn der Installationsprozess *nicht* mit einem Terminal verbunden ist. Bei meinen Tests mit dpkg hat das auch funktioniert. Mit apt-get funktioniert es jedoch nicht mehr.

Wie ich jetzt bei einem Blick in den Quelltext gelernt habe, schleust apt-get bei einem Aufruf von dpkg die gesamte Ein-/Ausgabe durch ein pty (pseudo-tty). Damit sieht es für dpkg *immer* so aus als ob es mit einem Terminal verbunden ist.

Für den Augenblick kannst du als Workaround abschalten, dass ein pseudo-tty verwendet wird:

Code: Select all

apt-get -o Dpkg::Use-Pty=false install logi-rts
Sorry für diese Unannehmlichkeit! Ich werde mir statt dem "test -t 1" eine bessere Methode überlegen und melde mich dann in Kürze nochmal zurück.

Zu deiner Frage, ob man das Update einspielen sollte: Wenn du logi.RTS gar nicht verwendest, kannst du das Update bedenkenlos einspielen oder das Paket mit "dpkg --purge" löschen. Wenn du die IDE auf deinem Entwicklungsrechner zeitgleich mit dem Update der Runtime auf dem RevPi aktualisierst, kannst du das Update ebenfalls bedenkenlos einspielen. Wenn du dagegen auf einer älteren Version der logi.CAD IDE bleiben möchtest, solltest du logi.RTS auf dem RevPi mit apt-mark auf der alten Version fixieren, weil es sonst zu Kompatibilitätsproblemen kommen kann. Wir hatten halt hier im Forum einen Fall, wo ein Benutzer auf eine solche Inkompatibilität gestoßen ist und hatten das Gefühl, dass wir bei Updates deutlicher auf dieses Problem hinweisen müssen. Daher haben wir den Dialog beim Update eingeführt.
User avatar
lukas
Expert
Posts: 186
Joined: 13 Feb 2017, 10:29

Re: Vollautomatisches Update + Konfiguration

Post by lukas »

Hallo Dennis,

ich habe das preinst Script angepasst, es stellte sich heraus dass der gewünschte Effekt erzielt wird, wenn auf File Descriptor 0 (stdin) statt 1 (stdout) getestet wird. Damit läuft die Installation bei mir kommentarlos durch, wenn das Kommando nicht-interaktiv aufgerufen wird, z.B. über cron oder indem man stdin von /dev/null umleitet. Zusätzlich prüfe ich auf die Environment Variable DEBIAN_FRONTEND=noninteractive, für den Fall dass Benutzer explizit das "noninteractive" debconf Frontend auswählen.

Ich habe das Paket unter derselben Versionsnummer wie zuvor (4.3.0-2+revpi1) ins apt Repository hochgeladen. Dadurch soll verhindert werden, dass der Dialog für die Version 4.3.0 erneut abgenickt werden muss. Nach einem "apt-get update" ist die aktualisierte Paketliste heruntergeladen und falls in /var/cache/apt noch die alte Version von 4.3.0-2+revpi1 liegt, wird diese von apt automatisch als veraltet erkannt wegen des nicht mehr gültigen SHA Hash. Stattdessen wird dann die neue Version heruntergeladen.

Jetzt funktioniert's hoffentlich zur Zufriedenheit, bitte nochmal melden wenn nicht.
heimspiel
Posts: 1
Joined: 15 Oct 2021, 15:38

Re: Vollautomatisches Update + Konfiguration

Post by heimspiel »

Hallo zusammen,

versuche gerade ein OS Update (RevPi Core 3, Stretch -> Buster) mithilfe von Ansible durchzuführen. Der Update Prozess bleibt, wie der Threadowner bereits geschrieben hat, am logi-rts Dialog hängen.
Konkret dreht es sich um das Paket logi-rts_5.0.0-1_armhf.deb. Wenn ich das Paket entpacke, ist im preinst Script noch die Zeile

Code: Select all

if [ -t 1 ] ; then
enthalten. Wurde die Änderung aus 4.3.0-2+revpi1 wieder zurück genommen?

Viele Grüße
jmacenka
Posts: 1
Joined: 15 Feb 2022, 21:44

Re: Vollautomatisches Update + Konfiguration

Post by jmacenka »

Hi,

magst du das playbook mit dem du versuchst das OS-Upgrade zu fahren vielleicht zur Verfügung stellen? Versuche mich auch gerade dem Thema Administration von RevPIs mittels ansible zu nähern und such sinnvolle Ausgangspunkte :-)

Danke und Gruß,
Jan
Post Reply