Here is another way. Although I like vladimir Botka's solution. ---
- hosts: localhost gather_facts: no vars: instances: - id: 1234 type: web - id: 1456 type: web - id: 1678 type: web - id: 3456 type: proxy - id: 2567 type: proxy - id: 2566 type: db - id: 4900 type: db tasks: - name: Set Fact for proxy set_fact: new_proxy: "{{ new_proxy|default([]) + [ { 'id': item.id } ] }}" loop: "{{ instances }}" when: item.type == 'proxy' - name: set Fact for db set_fact: new_db: "{{ new_proxy|default([]) + [ {'id': item.id } ] }}" loop: "{{ instances }}" when: item.type == 'db' - name: set Fact for web set_fact: new_web: "{{ new_proxy|default([]) + [ {'id': item.id } ] }}" loop: "{{ instances }}" when: item.type == 'web' - name: Print facts debug: msg: "Web - {{ new_web }} - DB - {{ new_db }} - Proxy - {{ new_proxy }}" - name: Final set fact set_fact: new_instances: "{{ new_instances|default([]) + [ {'db': new_db}, {'web': new_web}, {'proxy': new_proxy} ] }}" - name: Print final fact debug: var: new_instances On Fri, Nov 22, 2019 at 1:12 PM Vladimir Botka <vbo...@gmail.com> wrote: > On Fri, 22 Nov 2019 18:43:31 +0100 > Dick Visser <dick.vis...@geant.org> wrote: > > > instances: > > - id: i-0fe48c061f6a323a0 > > type: web > > - id: i-0403e39813defda31 > > type: web > > - id: i-0442f13b528e5e1c6 > > type: proxy > > - id: i-0ebea75d008becaa6 > > type: proxy > > - id: i-067c5d985c194e036 > > type: db > > - id: i-0679e87f06d0cf9a2 > > type: db > > > > Which I'd like to turn into this structure: > > > > instances: > > web: > > - id: i-0fe48c061f6a323a0 > > - id: i-0403e39813defda31 > > proxy: > > - id: i-0442f13b528e5e1c6 > > - id: i-0ebea75d008becaa6 > > db: > > - id: i-067c5d985c194e036 > > - id: i-0679e87f06d0cf9a2 > > The task below does the job > > - set_fact: > instances2: "{{ instances2| > default({})| > combine({item.0: item.1| > json_query('[].{id: id}')}) }}" > loop: "{{ instances|groupby('type') }}" > > Cheers, > > -vlado > > -- > You received this message because you are subscribed to the Google Groups > "Ansible Project" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to ansible-project+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/ansible-project/20191122201219.5d637e3c%40gmail.com > . > -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to ansible-project+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/CAB2Y44aogCGKcO-iNxmj7wuBujKd13JHUY1bAW7Jf6MGFZndGw%40mail.gmail.com.