2016-04-17 12 views
3

ansible脚本にホストグループからの辞書のリストを作成します。は、私は動的にこのようになります辞書のリストを作成したい

この変数は、私が使用している役割に必要です。この劇で

[WARNING]: While constructing a mapping from stack.yml, line 16, column 3, found a duplicate dict key (vars). Using last defined value only. 

そして、エラー:

fatal: [192.168.0.21]: FAILED! => {"failed": true, "msg": "ERROR! 'zk_hosts' is undefined"} 

私は脚本を実行したときに、私はこの警告を持っている、しかし

- hosts: 
    - some-hosts 
    vars: 
    zk_hosts: [] 
    tasks: 
    - name: create my var 
     set_fact: 
     zk_hosts: "{{ zk_hosts + [ {'host': item.1, 'id': item.0} ] }}" 
     with_indexed_items: "{{ groups.some-hosts }}" 

私の試みは、以下のとおりです。ファクトを設定する前にzk_hostsを定義していないと、変数が定義されていないというエラーが表示されます。

どうすれば解決できますか?


EDIT

簡単に修正は、私はちょうど...同じタスク内zk_hostsを定義し

とにかく
tasks: 
    - name: create my var 
     vars: 
     zk_hosts: [] 
     set_fact: 
     zk_hosts: "{{ zk_hosts + [ {'host': item.1, 'id': item.0} ] }}" 
     with_indexed_items: "{{ groups.some-hosts }}" 

、同じことを達成するためのより少ない面倒な方法がある場合は、お知らせ下さい!

答えて

2

デフォルトのフィルタを使用することができます

set_fact: 
    zk_hosts: "{{ zk_hosts|default([]) + [ {'host': item.1, 'id': item.0} ] }}" 
with_indexed_items: "{{ groups.some-hosts }}" 
関連する問題