2016-06-09 4 views
2

Irgendwann habe ich eine register: varname in ansible und später möchte ich einige Aufgaben nur ausführen, wenn die varname.stdout definiert ist und nicht leer.Wie kann man leicht zu lösende Aufgaben überspringen, wenn eine registrierte Variable nicht definiert wurde?

Wie kann ich leicht dies in einer Weise tun, die den berüchtigten vermeiden würde:

"One or more undefined variables: 
    'dict' object has no attribute 'stdout'" 

Ich versuchte when: varname is defined and hasattr(varname, 'stdout') aber es scheint nicht die Aufgabe zu umgehen, und ich immer noch die gleichen Fehler.

+3

'wenn: res.stdout definiert ist 'funktioniert für mich mit ansible 2.1.0.0. Werfen Sie keine Fehler auf, wenn "res" oder "res.stdout" nicht definiert sind. –

Antwort

2

(Siehe auch How to run a task when variable is undefined in ansible?)

Wenn Sie werden Super-explizite wollen, so etwas wie when: varname is defined and varname.stdout is defined and varname.stdout != '' sollte für Ihre Zwecke arbeiten.

+0

In der Tat sollte dies Teil des Plakats sein, das die Einfachheit von Ansible ankündigt! ;) – sorin

Verwandte Themen