How to convert a dictionary of dictionaries into a list of dictionaries in a Ansible vars file?

Jeff Widman picture Jeff Widman · May 18, 2016 · Viewed 14k times · Source

Within an Ansible vars file, I want to convert a dict of dicts into a list of dicts that I can pass to an external role from Ansible Galaxy.

Input:

postgres_users:
  dc1:
    name: user_dc1
    password: pass_dc1
  dc2:
    name: user_dc2
    password: pass_dc2
  dc3:
    name: user_dc3
    password: pass_dc3

Desired output:

postgres_users:
  - name: user_dc1
    password: pass_dc1
  - name: user_dc2
    password: pass_dc2
  - name: user_dc3
    password: pass_dc3

Is there a simple way to do this within an Ansible vars file?

Answer

Jeff Widman picture Jeff Widman · May 18, 2016

{{ postgres_users.values() | list }} seems to do it.