Frage Ansible

  • Ich nutze ein Playbook, um alle Server (inkl lokaler Raspis) upzudaten. Dabei werden bei 2 Raspis (Debian 12 inkl GUI) immer Änderungen (changed=1) angezeigt, auch wenn gar keine Änderungen/Updates anliegen. Das ist jetzt sicher kein schwerwiegendes Problem, allerdings hätte ich trotzdem gerne ne Lösung. Hier mal ein Auszug des Playbooks



    Welche Möglichkeiten gibt es, um zu sehen, was da angeblich geändert wurde?

  • Wenn du das Playbook zwei Mal direkt hintereinander ausführst, zeigt er dann trotzdem den ersten Task als "changed" an? Das sollte er eigentlich nicht, wenn das Modul richtig funktioniert. Beim ersten Durchlauf wird er es natürlich machen, weil

    Code
    update_cache: yes

    ja den apt cache aktualisiert und damit eine Änderung macht. Falls dann auch Updates vorliegen sollten, würde auch der 2. Task ein "changed" zurückgeben. Aber wenn du das Playbook direkt nochmal ausführst, dann sollte eigentlich die cache_valid_time greifen und er sollte den cache dann nicht aktualisieren. Hast du dieses Szenario mal durchgespielt?

  • Ja, die beiden werden immer als "changed" angezeigt. Wie gesagt, es betrifft nur diese beiden Raspis mit GUI. Das auch nur, seitdem ein upgrade auf Debian 12 durchgeführt wurde. Vorher (Debian 11) gab es keine Problem. Im lokalen Netz sind noch einige andere Raspis mit Debian 12 (ohne GUI), Hier gibt es keine Probleme.

  • Hm. Welche Ansible Version hast du denn im Einsatz? Ich habe deinen Task hier mal kurz gegen ein Debian 12 laufen lassen. Hier funktioniert es aber wie es soll. Beim ersten Mal ist der Task noch "changed", beim zweiten Mal ist alles ok. Du kannst das Playbook auch mal mit -Dvvv laufen lassen. Damit bekommst du etwas mehr Output. Du könntest ein apt update auch mal direkt auf dem Server ausführen. Evtl bekommst du dort noch andere Warnings oder Fehlermeldungen, die Ansible vielleicht unterdrückt.

  • Achso, welcher Task wird denn überhaupt als changed markiert? Der erste oder der zweite? Beim zweiten könnten es auch zurückgehaltene Pakete oder fehlerhafte dpkg-configure Tasks sein, die immer wieder gemacht werden. Auch da bietet es sich an, wenn man den upgrade Befehl direkt auf dem Server ausführt und sich den Ouput anschaut. Gerade wenn das ein Debian mit GUI ist, sind dort ja viel mehr Pakete installiert, die ggfs. Probleme machen könnten. Vielleicht gibt es auch andere Repos, die konfiguriert sind und dadurch Paket Konflikte auslösen. Gerade hier sind die Ausgaben von dpkg/apt manchmel sehr verbesserungswürdig.

  • Ansible core 2.14.16. Die Änderungen erfolgen erst beim 2. Task (upgrade: yes)

    Hier mal ein Log Auszug



    Code
    2024-11-06 19:27:09,354 p=878626 u=root n=ansible | pi3.local                  : ok=3    changed=1    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0



    apt-mark showhold bringt keine Paket zum Vorschein. Wird auch nichts zurückgehalten

  • Mal ein Schuss ins Blaue: Wie sieht denn der Log Auszug bei den Servern aus, die kein changed anzeigen? Könnte es evtl. an der Sprache liegen? Ich habe jetzt auch den 2. Task bei mir mal getestet. Aber ich kann das Problem nicht reproduzieren. Bei mir ist die Sprache auf dem Server aber auch in Englisch. Ich könnte mir durchaus vorstellen, dass Ansible die deutschen Begriffe nicht richtig interpretiert. Denn dein diff aus dem Log Auszug wirkt seltsam.

    So sieht das auf meinem Testsystem aus (Output ist in yaml, aber das macht sonst keinen Unterschied)

    Ansonsten könntest du es natürlich auch nochmal mit der neusten Ansible Version versuchen.

  • Spracheinstellungen waren in der Vergangenheit öfter ein Problem für Ansible, vgl. https://github.com/ansible/ansible/issues/14264

    Ich würde dazu raten, durch Modifikation der Umgebungsvariablen grundsätzlich alle Tasks mit englischen Spracheinstellungen laufen zu lassen (der verlinkte Diskussionsfaden sollte ein paar Anhaltspunkte dafür geben).

    VServer IOPS Comparison Sheet: https://docs.google.com/spreadsheets/d/1w38zM0Bwbd4VdDCQoi1buo2I-zpwg8e0wVzFGSPh3iE

    Like 3 Happy Duck 1
  • Vielen Dank euch beiden für die Antworten. Genau hier lag das Problem. Ich habe die locale auf en_US geändert und schon funktioniert Ansible problemlos. Nun ist allerdings die GUI auch auf Englisch, das ist aber nicht weiter tragisch.