2017-03-05 6 views
0

私は、次のdictからURLのリスト、つまり[url1, url2, url3, url4, url5, url6, url7]を取得して、これを私のAnsibleプレイブックの変数に割り当てることができます:jinjaを使用して複雑なdict構造体から値のリストを返す

dict: 
    site1: 
    domains: 
     - canonical: url1 
     redirects: 
      - url2 
      - url3 
    site2: 
    domains: 
     - canonical: url4 
     redirects: 
      - url5 
      - url6 
      - url7 

私はすべての種類のフィルタで遊んできましたが、これまでのところ何かを得ることはできませんでした。 jinjaで私よりも優れている人が助けてくれることを願っています。ありがとう。

+0

どのようにこの問題に神社に動作しますか? –

答えて

2

json_queryは助けることがあります。

- hosts: localhost 
    gather_facts: no 
    vars: 
    dict: 
     site1: 
     domains: 
      - canonical: url1 
      redirects: 
       - url2 
       - url3 
     site2: 
     domains: 
      - canonical: url4 
      redirects: 
       - url5 
       - url6 
       - url7 
    tasks: 
    # get redirects 
    - debug: msg="{{ dict | json_query('*.domains[].redirects[]') }}" 
    # get all urls 
    - debug: msg="{{ dict | json_query('*.domains[].{c:to_array(canonical),r:redirects} | [].*[][]') }}" 
+0

[json_query](http://docs.ansible.com/ansible/playbooks_filters.html#json-query-filter)はAnsible 2.2の新機能です。ありがとう。私はこのフィルターが導入されたことを知らなかった。 –

関連する問題