/ / jinja / ansible prevádza reťazec na boolean - python-3.x, ansible, jinja2

jinja / ansible previesť reťazec na boolean - python-3.x, ansible, jinja2

Potrebujem jednoduchú vec - ak je premenná false alebo prázdny reťazec, potom ho vyhodnoťte false, V opačnom prípade vyhodnotiť ako pravdivé.

skúsil som bool(var) ale ja sa dostanem:

UndefinedError: "bool" is undefined

Potom som to skúsil var | bool ale aj keď var nie je prázdny, vyhodnotí sa to false, Ako zabezpečiť, aby táto podmienka fungovala?

odpovede:

1 pre odpoveď č. 1

Našiel som možné riešenie v rubínovom štýle:

    when: not not var

Ale je to dosť škaredé. Zabudol som to povedať bez not not var vyhodnocuje reťazec, aby bolo možné zistiť chyby. Dúfam, že pre lepšiu odpoveď, tak prosím, pridajte ďalšiu odpoveď, ak máte.


0 pre odpoveď č. 2

Váš hlavný problém spočíva v tom, že pri použití bude čokoľvek iné ako „skutočné“ vyhodnotené ako nepravdivé var | bool.

Ak ho vždy zadávate ako reťazec (napr. var: "" alebo var: "false"), potom môžete skontrolovať rovnosť reťazcov:

when: condition == "false" or condition == ""

Ak máte túto možnosť, môžete pridať aj boolovský šek:

when: not condition or condition == "false" or condition == ""

Prípadne by ste mohli predvoliť na logický a voliteľne prepísať. Môžete mať napríklad rolu, ktorá má podmienečnú úlohu:

Úloha / foo / úlohy / main.yml

- name: echo foobar
shell: echo "foobar"
when: echo_foo

Úloha / foo / defaults / main.yml

echo_foo: false

Potom by sme to však mohli prepísať na úrovni skupiny alebo hostiteľa rôznej úrovne:

group_vars / foobar-nodes.yml

echo_foo: true