Bem, posso sugerir uma solução semi-hacky onde você usa set_fact algumas vezes para construir uma lista de ditos que você provavelmente pode usar?
- hosts: localhost
vars:
nova_flavors:
- disk: 10
name: m1.tiny
properties:
disk_read_bytes_sec: 12500000
disk_read_iops_sec: 1000
disk_write_bytes_sec: 3125000
ram: 1
- disk: 10
name: m1.small
properties:
vif_outbound_burst: 7500000
vif_outbound_peak: 25000
ram: 2
tasks:
- set_fact:
aslist: |
[
{% for item in nova_flavors %}
{% for prop in item.properties.keys() %}
{{ '{' }} 'name':'{{ item.name }}','propname':'{{ prop }}','propvalue':{{item.properties[prop]}} {{ '}' }},
{% endfor %}
{% endfor %}
]
- debug:
var: aslist
Resultados.
TASK [debug] *******************************************************************
ok: [localhost] => {
"aslist": [
{
"name": "m1.tiny",
"propname": "disk_write_bytes_sec",
"propvalue": 3125000
},
{
"name": "m1.tiny",
"propname": "disk_read_iops_sec",
"propvalue": 1000
},
{
"name": "m1.tiny",
"propname": "disk_read_bytes_sec",
"propvalue": 12500000
},
{
"name": "m1.small",
"propname": "vif_outbound_peak",
"propvalue": 25000
},
{
"name": "m1.small",
"propname": "vif_outbound_burst",
"propvalue": 7500000
}
]
}
PLAY RECAP *********************************************************************
localhost : ok=4 changed=0 unreachable=0 failed=0
Acredito que isso permitiria que você passasse as listas construídas definindo cada propriedade.