2017-06-02 3 views
0

Ich wollte eine Liste an eine andere in Ansible anhängen. Während seiner Zeit bei, dass ich fand, dass die Verwendung vonAnhängen einer Liste an eine andere in Ansible (oneliner)

tasks: 
    set_fact: 
    my_list: "{{ my_list + my_append_list }}" 

funktioniert, aber es erfordert drei Zeilen Code, die eine Menge Ärger zu sein scheint. Das Problem ist, dass die Verwendung von

my_list: "{{ my_list + my_append_list }}" 

endet in einer unendlichen Rekursion. Diese Art der Zuweisung funktioniert nur, wenn ein dritter Listenname (so etwas wie my_third_list: "{{ my_list + my_append_list }}")

Die Frage ist: Gibt es eine Möglichkeit, eine Liste an eine andere mit einer einzigen Zeile Code und ohne die Verwendung von eine andere Variable macht?

Vielen Dank im Voraus, P.

Antwort

1

Nein, denn in ansible in den meisten Fällen Sie Variablen nicht zuweisen, sondern Vorlagen definieren.

Aufgabe:

- set_fact: 
    my_list: "{{ my_list + my_append_list }}" 

Dies ist eine Art von: Vorlage, was auf der rechten Seite ist und das Ergebnis auf die linke Seite zuweisen, Templating (Auswertung) wird zur Zeit von set_fact Ausführung getan.

Aliasing (ich diesen Begriff erfunden, werden Sie dies nicht in ansible docs):

vars: 
    my_list1: "{{ my_list + my_append_list }}" 

Dies ist eine Art: einen Alias ​​mit dem Namen my_list1 (auf der linken Seite) für Templat-Definition Schnur auf der rechten Seite. Die rechte Seite wird zu dem Zeitpunkt templated (evaluiert), wenn Sie my_list1 Variable in einer Aufgabe verwenden.

Und wenn Sie den gleichen Namen auf der linken Seite und innerhalb des Ausdrucks auf der rechten Seite verwenden, erhalten Sie unendliche Rekursion ..

Verwandte Themen