2017-03-29 13 views
0

変数だけを含む単純なテンプレートを使用しています。 これは私の仕事は私の脚本(私の脚本から使用されて実際に役割)でどのように見えるかです:変数with_itemsを解析できない可能性のあるテンプレートモジュール

- name: Ensure the conf file exists 
    template: 
    src: file.conf.j2 
    dest: '/opt/file.conf' 
    with_items: '{{ myrole }}' 

私はgroup_vars内の変数を保持します。 file.conf.j2の変数は{{ myrole_user }}のように正しく展開されますが、{{ myrole.applicationName }}などのwith_items変数の1つを展開すると失敗します。

私group_varsは、次のようになります。

myrole_user: regularuser 
myrole: 
    - { applicationName: foo, othervar: bar } 

そして、これはAnsibleエラーです:

"msg": "AnsibleUndefinedVariable: 'list object' has no attribute 'applicationName'"

答えて

3

あなたはとても、myroleと呼ばれるリストを定義し、その後、キーmyrole.applicationNameの値にアクセスしようリストにキー/属性が含まれていないというエラーメッセージが表示されます(これは本当です - リストには要素の順序付けられたセットのみが含まれています)。

:テンプレートであなたが item(ない完全なまま myrole変数へ)を参照する必要がありますので、デフォルト *によって

Ansible with_ループは、現在の反復の要素の値を含むitemという名前の変数を設定します*

{{ item.applicationName }} 

あなたはloop controlセクションでloop_var設定でこれを変更することができます。

関連する問題