2017-10-30 7 views
1

入れ子になったデータをループするにはwith_subelementsを使用しています。入れ子にされた要素をループしたいが、反復処理されるときに第2レベルのデータをソートする。Possible with_subelementsリストからアイテムをソートする方法

- name: Can I haz sorted nested elements? 
     debug: msg="device={{item.0.key}}, mounted at {{item.1.mount_point}}" 
     when: profile_data.enabled 
     with_subelements: 
     - profile_data.layouts 
     - partitions 

私はリストをソートするためにいくつかのことを試してみましたが、私は使用されることを想定しているように、with_subelementsを使用しています疑います。

 with_subelements: 
     - profile_data.layouts 
     - "{{ partitions|sort(attribute='number') }}" 

は自分with_sorted_subelementsプラグインを記述することなく、このことが可能です:

私は成功せず、これを試してみましたか?

答えて

2

本当に必要な構造からどのデータが得られるかによって異なります。ここで

は、ネストされた要素をソートする例です:

ここ
--- 
- hosts: localhost 
    gather_facts: no 
    vars: 
    mydict: 
     key1: 
     key: hello 
     persons: 
      - name: John 
      age: 30 
      - name: Mark 
      age: 50 
      - name: Peter 
      age: 40 
     key2: 
     key: world 
     persons: 
      - name: Mary 
      age: 30 
      - name: Julia 
      age: 25 
      - name: Paola 
      age: 35 
    tasks: 
    - debug: 
     msg: "{{ item.0.k }} {{ item.1.age }} {{ item.1.name }}" 
     with_subelements: 
     - "{{ mydict | json_query('*.{k:key, p:sort_by(persons, &age)}') }}" 
     - p 

私はkとしてkeyを取り、オリジナルの辞書からpとしてpersonsをソートし、with_subelementsにそれを養います。

出力は次のようになります。

"msg": "world 25 Julia" 
"msg": "world 30 Mary" 
"msg": "world 35 Paola" 
"msg": "hello 30 John" 
"msg": "hello 40 Peter" 
"msg": "hello 50 Mark" 
+0

私はjson_query' '知りませんでした、そしてそれは有望に見えます。残念ながら、私はAnsible 1.9.2に固執しています(そして、はい、私はその欠陥について知っています)。 – Randy

関連する問題