2016-03-22 5 views
0

Mit einfachem TextbuchWarum Ansible's nicht definierte Variable nicht als Fehler für das Playbook gilt?

--- 
- hosts: all 
    tasks: 
    - debug: var=not_existsing_var 

Ich habe

ok: [compute01] => { 
    "not_existsing_var": "VARIABLE IS NOT DEFINED!" 
} 

Und ansible-playbook ‚s Exit-Code wird zu 0. Aber warum? Warum ist es ok? Ist es normal, wenn beliebig undefinierte Variablen auf diese Weise definiert wurden?

Und eine zweite Frage: Wie kann ich dies umgehen und meinen Fehler bekommen?

Antwort

1

Dies ist das erwartete Verhalten. Ich kann dir nicht erklären warum es so ist wie ich es nicht erklären kann, warum es in Anwendung X anders gehandhabt wird. Es war eine Designentscheidung der Entwickler. Aber ich glaube, es ist eine gute Eigenschaft, da Sie im Detail können definieren, was mit nicht definierten Variablen mit diesen beiden Filter passieren soll:

  1. Pflicht

    Wenn eine Variable erforderlich ist, einfach die obligatorischen Filter hinzufügen:

    not_existsing_var | mandatory

    Dies wird Ansible sofort zum Scheitern bringen und sich über die fehlende Variable beschweren.

    Docs: Forcing Variables To Be Defined

  2. Standard

    Sie einen Standardwert für den Fall zur Verfügung stellen kann die Variable nicht wie so festgelegt ist:

    not_existsing_var | default("the default value")

    Docs: Defaulting Undefined Variables

Wenn dieses Verhalten unangenehm ist und Sie möchten, dass alle undefinierten Variablen einen Fehler verursachen, können Sie define this in you ansible.cfg:

error_on_undefined_vars=True