Ansible: Standardfilter löst Variablen in Ansible 1.8.2 nicht auf

Erstellt am 19. Dez. 2014  ·  3Kommentare  ·  Quelle: ansible/ansible

Problemtyp:

Fehlerbericht

Ansible-Version:

1.8.2

Umfeld:

RHEL5

Zusammenfassung:

Der Standardfilter löst keine in der Bestandsliste definierten Variablen auf.

Wenn ich zum Beispiel in meiner Inventardatei die folgende Variable definiert habe:

app_install_dir=/test

Mein Playbook hat dies und "somevariable" ist nicht definiert:

dest_dir="{{irgendeinevariable | default('{{app_install_dir}}/DATA') }}"

Beim Ausführen des Playbooks kann „app_install_dir“ standardmäßig nicht aufgelöst werden.

Dies funktionierte früher unter Ansible 1.7.1.

Schritte zum Reproduzieren:

1) Definieren Sie eine Variable im Inventar namens "test_directory=/tmp/testdir"
2) Erstellen Sie im Playbook ein Verzeichnis, das durch die Variable dest={{ undefined_variable | definiert ist default('{{test_directory}}') }}
3) Nach dem Ausführen des Playbooks kann der Wert von „test_directory“ nicht aufgelöst werden

Erwartete Ergebnisse:

Der Standardfilter sollte in der Lage sein, Variablen aufzulösen

Tatsächliche Ergebnisse:

Der Standardfilter löst keine im Inventar definierten Variablen auf

Hilfreichster Kommentar

Normalerweise sehe ich keine Posts in geschlossenen Tickets, aber ein IRC-Benutzer hat mich darauf angesprochen:
dest={{ undefined_variable | default(test_directory + '/subdir') }}

Alle 3 Kommentare

Mögliches Missverständnis

Hallo!

Vielen Dank für Ihre Übermittlung an Ansible. Es bedeutet uns aufrichtig viel.

Wir glauben, dass das von Ihnen eingereichte Ticket etwas missverstanden wird, da eine Sache etwas anders funktioniert als angegeben.

dest={{ undefined_variable | default('{{test_directory}}') }}

ein ungültiger Ausdruck ist, können Sie {{ }} nicht verschachteln, was Sie wahrscheinlich wollen, ist Folgendes:

dest={{ undefined_variable | default(test_directory) }}

In Zukunft könnte dies ein Thema sein, das besser für die Benutzerliste geeignet ist, die Sie auch hier posten können, wenn Sie weitere Hilfe zu den oben genannten Punkten benötigen.

Nochmals vielen Dank dafür und für Ihr Interesse an Ansible!

@bcoca : Gut zu wissen, aber bedeutet das, dass wir eine Variable und ein Literal nicht in einem Standard verketten können? Etwas wie: dest={{ undefined_variable | default('{{test_directory}}/subdir') }} (aber nicht ungültig ;-)

Normalerweise sehe ich keine Posts in geschlossenen Tickets, aber ein IRC-Benutzer hat mich darauf angesprochen:
dest={{ undefined_variable | default(test_directory + '/subdir') }}

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen