2017-02-22 29 views
4

在ansible 1.9我有一些角色,我可以利用不確定的變量(在ansible.cfg error_on_undefined_vars = FALSE)模板的使用的方式沒有任何問題:ansible 2:不能用民主基金瓦爾模板

模板.yml:

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

如果沒有定義這些變量中的任何一個,則不會被替換。所以,你可以根據需要在你的劇本中指出一些這些變量,而不是其他變量。但我發現,在升級到2.2.0.0之後,如果沒有定義這些變量,那麼它們都不會被替換,結果模板爲: {{var1}} {{var2} } {{VAR3}}

如:

劇本:

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

任務:

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

運行該劇本後,用1.9 ansible由此而來的/ tmp /測試運行是

13 

並用ansible 2.2.0.0是

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

所以,無瓦爾被取代。

但如果:

劇本:

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

運行這個劇本,所產生的/ tmp /試運行與ansible 1.9/2.2.0.0之後是

123 

有沒有人dealed與此行爲之前?

回答

0

你可以做的事情之一是把變量放在條件檢查中,不管它是否被定義。或者把變量塊,如果你需要定義所有的變量來設置。您的模板應該是這樣的:

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

如果您已經全部三個變量定義的模板將得到與123內複製。如果您甚至有一個未定義的變量,則文件將被複制而沒有上述變量塊。

+0

我不認爲OP問如何模仿Ansible 1.9中的Ansible 2行爲,但相反。 – techraf

相關問題