meta: end_play von einer Kondition abhängig machen und Playbook beenden

Hallo zusammen,

ich code gerade ein Playbook, in dem ich mit einer Kondition das Playbook beenden möchte.

  • name: Patching Servers
    hosts: all
    gather_facts: yes
    become: true

    tasks:

    • name: Check, if system is up-to-date. If yes, exit, else continue
      dnf:
      list: updates
      register: packages

    • meta: end_play
      when: packages == “”

Die Idee ist, die Variable “packages” in “when” abzufragen, und wenn keine Updates vorliegen, das Playbook mit “meta: end_play” zu beenden. Ich bekomme aber scheinbar keinen return value, oder der dieser ist immer true, so dass das Playbook immer weiterläuft.

Meine Frage ist, wie kann ich “packages” checken, um einen verlässlichen return value zu bekommen?

Vielen Dank im Voraus für Eure Hilfe.

Best Grüße,
Oliver

Ich denke, was du willst, ist ein Vergleich gegen eine leere Liste und nicht gegen einen leeren String, wie im folgenden Beispiel. Das andere Problem ist, dass die Paketliste unter dem Schlüssel results liegt.

when: packages.results == []

Es kann auch hilfreich sein, das debug-Plugin zu verwenden, um den Typ der Werte zu sehen.

- debug:
    var: packages

I think what you want is to compare against an empty list, and not an empty string, such as the following. The other issue is that the package list will be under the key results.

when: packages.results == []

It can also be helpful to use the debug plugin, to see the type of values.

- debug:
    var: packages