GNU/Linux >> Znalost Linux >  >> Linux

Přípustná podmíněná na základě stdout výsledku?

Zkuste zkontrolovat, zda se rovná prázdnému řetězci nebo ne?

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

Od roku 2018 je doporučený způsob testování, zda je výstup prázdný, pouze:

when: result.stdout | length > 0

To je pythonic způsob vyhodnocování pravdivosti, null, prázdných řetězců, prázdných seznamů, všechny jsou hodnoceny jako nepravdivé.

Jiné starší alternativy nedoporučujeme nebo dokonce nefunguje:

  • result.stdout != "" neprošel by kontrolou ansible-lint!
  • result.stdout | bool NEBUDE fungovat, protože většina řetězců bude vyhodnocena jako False, pouze případy, kdy by to vrátilo true, je, pokud je stdout náhodou jedním z true , yes ,... druh strun.
  • result.stdout dříve fungoval, ale nyní spouští:

[VAROVÁNÍ PŘEDPOKLADEM]:při vyhodnocení jako holé proměnné toto chování zmizí a v budoucnu možná budete muset do výrazu přidat |bool. Viz také přepínač konfigurace CONDITIONAL_BARE_VARS. Tato funkce bude ve verzi 2.12 odstraněna. Upozornění na ukončení podpory lze zakázat nastavením deprecation_warnings=False inansible.cfg.`


Linux
  1. Obnovuji své vzrušení z práce s Ansible

  2. Podmíněná kompilace v C++ na základě operačního systému

  3. Zkontrolujte, zda existuje databáze mysql, proveďte akci na základě výsledku

  1. Deconstructing ansible playbook

  2. Pochopení YAML pro Ansible

  3. Log rotace stdout?

  1. Jak vytvořit Ansible Playbook

  2. Výsledek Ls *, Ls ** a Ls ***?

  3. Ansible:sudo bez hesla