2017-03-05 61 views
0

我想要做的是從下面的字典中獲得一個網址列表,例如[url1, url2, url3, url4, url5, url6, url7],以便我可以將它分配給我的Ansible手冊中的變量:使用jinja從複雜的字典結構中返回值列表

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

我一直玩弄各種各樣的過濾器,並沒有設法得到迄今爲止的任何工作。希望在忍者身上比我強的人可以幫忙。謝謝。

+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中的新增功能。謝謝你。我不知道這個過濾器被引入。 –