ansible Jinja2 JSON循环最后一个元素
我试图使用Ansible传递的变量从Jinja2模板生成JSON文件。据我所知,这里没有帮助我的模块(需要更正吗?) 我被困在最后一圈ansible Jinja2 JSON循环最后一个元素,ansible,jinja2,Ansible,Jinja2,我试图使用Ansible传递的变量从Jinja2模板生成JSON文件。据我所知,这里没有帮助我的模块(需要更正吗?) 我被困在最后一圈 { "items": [ {% for host in hostvars %} {"apiversion": "v1", "lastrunupdate": "{{ hostvars[host]['date'] }}", &quo
{
"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列表的末尾。您的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 %}
}
]
}
注意:我已将其拆分,以便更具可读性
“请想一想”ー 这里有一个想法:您应该首先从您发布的内容中删除不必要的代码(是否
“主机名”):“null”,与问题相关?
,然后添加缺失的位(这样其他人就不必重新创建您遗漏的内容),最后明确指定您的期望值和实际结果。 ・ 例如,如果没有上下文,你说的“最后一个循环广告}”是毫无意义的:这是你想要的吗?这是你想要阻止的(以及如何阻止的?),但没有奏效吗?还是什么?谢谢,抱歉原来的帖子太差了,真是漫长的一天!