2017-02-22 5 views
4

Bei ansible 1.9 ich einige Rollen, die ich Verwendung von nicht definierten Variablen (error_on_undefined_vars = False bei ansible.cfg) in Vorlagen ohne Probleme in der Art und Weise machen:ansible 2: kann nicht verwendet werden undef Vars in Vorlagen

Vorlage .yml:

{{ var1 }}{{ var2 }}{{ var3 }} 

Wenn einer dieser Variablen nicht definiert ist, wird nichts ersetzt. Also können Sie einfach in Ihrem Spielbuch einige dieser Variablen und nicht andere wie gewünscht angeben.

Aber ich fand, nach dem Upgrade auf ansible 2.2.0.0, dass, wenn einige dieser Variablen nicht definiert sind, sie keine der Vars der Vorlage ersetzt werden und die resultierende Vorlage lautet: {{var1}} {{var2} } {{}} var3

ZB:

Textbuch:

- hosts: myhost 
    vars: 
    var1=1 
    var3=3 
    roles: 
    - myrole 

Aufgaben:

- name: copy template 
    become: true 
    template: src=test.j2 dest=/tmp/test owner=user group=user 

Nachdem dieses Textbuch ausgeführt wird, die resultierenden/tmp/Testlauf mit ansible 1.9 ist

13 

und mit ansible 2.2.0.0 ist

{{ var1 }}{{ var2 }}{{ var3 }} 

also keine Vars substituiert sind.

Aber wenn:

Textbuch:

- hosts: myhost 
    vars: 
    var1=1 
    var2=2 
    var3=3 
    roles: 
    - myrole 

Nach diesem Textbuch ausgeführt wird, der resultierenden/tmp/Testlauf mit ansible 1.9/2.2.0.0 ist

123 

Hat jemand dealed Mit diesem Verhalten vorher?

Antwort

0

Eines der Dinge, die Sie tun können, ist die Variable in eine bedingte Prüfung zu setzen, ob sie definiert ist oder nicht. Oder setzen Sie den Block von Variablen, wenn Sie alle definiert haben müssen, um gesetzt zu werden. Die Vorlage sollte wie folgt aussehen:

{% if var1 is defined and var2 is defined and var3 is defined %} 
     {{ var1 }}{{ var2 }}{{ var3 }} 
{% endif %} 

Wenn Sie alle drei Variablen definiert, wird die Vorlage mit 123 innen kopiert werden. Wenn Sie nur eine undefinierte Variable haben, wird die Datei ohne den obigen Variablenblock kopiert.

+0

Ich glaube nicht, dass OP gefragt hat, wie man Ansible 2-Verhalten in Ansible 1.9 nachahmt, aber das Gegenteil. – techraf

Verwandte Themen