GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ansible Bedingung basierend auf stdout des Ergebnisses?

Versuchen Sie zu prüfen, ob es sich um eine leere Zeichenfolge handelt oder nicht?

- hosts: myhosts
  tasks:
  - name: echo hello
    command: echo hello
    register: result
  - command: somecommand {{ result.stdout }}
    when: result.stdout != ""
  - command: someothercommand
    when: result.stdout == ""

Ab 2018 ist die empfohlene Methode zum Testen, ob die Ausgabe leer ist, einfach:

when: result.stdout | length > 0

Das ist die pythonische Art, Wahrheit, Null, leere Zeichenketten und leere Listen als falsch zu bewerten.

Andere ältere Alternativen nicht empfohlen oder gar nicht funktioniert:

  • result.stdout != "" würde die Ansible-Lint-Prüfung nicht bestehen!
  • result.stdout | bool wird NICHT funktionieren, da die meisten Zeichenfolgen als False ausgewertet werden, nur in Fällen, in denen es true zurückgeben würde, wenn stdout zufällig einer der true ist , yes ,... eine Art Streicher.
  • result.stdout Hat früher funktioniert, löst jetzt aber aus:

[WARNUNG ÜBER VERLETZUNG]:Bei der Auswertung als bloße Variable verschwindet dieses Verhalten, und Sie müssen in Zukunft möglicherweise |bool zum Ausdruck hinzufügen. Siehe auch CONDITIONAL_BARE_VARS configurationtoggle.. Diese Funktion wird in Version 2.12 entfernt. Deprecationwarnings können durch Setzen von deprecation_warnings=False inansible.cfg.`

deaktiviert werden
Linux
  1. Dekonstruktion eines Ansible-Playbooks

  2. Das Ergebnis von Ls * , Ls ** und Ls ***?

  3. Überprüfen Sie, ob eine MySQL-Datenbank vorhanden ist, und führen Sie die Aktion basierend auf dem Ergebnis aus

  4. Ansible:sudo ohne Passwort

  5. Android - Basiert Android auf Linux?

Beste Linux-Distributionen basierend auf KDE

Einführung in die Ansible-Automatisierungsplattform

Installieren und konfigurieren Sie Ansible unter Linux

Wie man Ansible verwendet, um Vim zu konfigurieren

Eine Einführung in Ansible-Fakten

Eine kurze Einführung in Ansible Vault