2017-02-22 7 views
4

にvarsは使用できません。 .yml:ansible 2:</p> <p>テンプレート:私は方法で問題なくテンプレートで(ansible.cfgで偽error_on_undefined_vars =)未定義の変数を利用することができ、いくつかの役割を持っているansible 1.9でundefをテンプレート

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

これらの変数のいずれかが定義されていない場合、何も置換されません。だから、あなたは単にあなたのプレイブックにこれらのヴァースをいくつか示し、他のものは望みどおりに示すことはできません。

2.2.2.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 

このハンドブックを実行した後、ansible 1.9を有する得られた/ TMP /試運転は

13 

とansible 2.2.0.0と

だから、なしVARSが置換されている

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

です。

しかし、もし:

脚本:

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

この脚本、ansible 1.9/2.2.0.0との結果を/ tmp /テストランを実行した後

がdealed誰を持ってい

123 
です前にこの行動で?

答えて

0

あなたができることの1つは、変数が定義されているかどうかを条件付きチェックに入れることです。または、設定するために定義されたすべての変数が必要な場合は、変数のブロックを入れてください。あなたのテンプレートは次のようになります。あなたが定義されたすべての3つの変数を持っている場合は

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

、テンプレートが123内部にコピーされます。定義されていない変数が1つでもある場合、ファイルは上記の変数ブロックなしでコピーされます。

+0

私はOPがAnsible 1.9でAnsible 2の動作を模倣する方法を尋ねたとは思いませんが、その反対です。 – techraf

関連する問題

 関連する問題