我试图使用从ansible传递的变量从jinja2模板生成json文件。据我所知,这里没有可以帮助我的模块(需要纠正吗?)
我卡在最后一个循环上
{
"items": [
{% for host in hostvars %}
{"apiversion": "v1",
"lastrunupdate": "{{ hostvars[host]['date'] }}",
"hostname": "null",
"hostip": "{{ hostvars[host]['inventory_hostname'] }}",
"whoami": "{{ hostvars[host]['whoamiraw'] }}",
"serialnumber": "{{ hostvars[host]['serial'] }}",
"version": "{{ hostvars[host]['version'] }}",
"ipaddress": "{{hostvars[host]['ipaddressraw'] }}",
"users": [
{% for hosts in hostvars[host]['listofusersraw'] %}
{"user":"{{ listofusersraw[loop.index0].split(':')[0] }}" } {% if not loop.last %},{%else%}]},{% endif %}{% endfor %}
{% endfor %}
}
]
}

最后一个循环广告},到json列表的末尾....
想法
提前致谢
答案 0 :(得分:1)
你的jinja2中有一些额外的角色。添加逗号时删除else:
{
"items": [
{% for host in hostvars %}
{"apiversion": "v1",
"lastrunupdate": "{{ hostvars[host]['date'] }}",
"hostname": "null",
"hostip": "{{ hostvars[host]['inventory_hostname'] }}",
"whoami": "{{ hostvars[host]['whoamiraw'] }}",
"serialnumber": "{{ hostvars[host]['serial'] }}",
"version": "{{ hostvars[host]['version'] }}",
"ipaddress": "{{hostvars[host]['ipaddressraw'] }}",
"users": [
{% for hosts in hostvars[host]['listofusersraw'] %}
{"user": "{{ listofusersraw[loop.index0].split(':')[0] }}" }
{% if not loop.last %}
,
{% endif %}
{% endfor %}
]
{% endfor %}
}
]
}
注意:我已将其拆分为更具可读性。