Ansible Jinja2处理嵌套字典生成IP拼接列表格式异常问题
Jinja2模板调整方案
问题核心
原有模板嵌套两层循环导致列表名重复输出,且IP拼接逻辑错误,可直接使用Jinja2内置join过滤器简化实现。
正确模板代码
{% for hosts_key, hosts_value in ip_allowed.items() %} {{ hosts_key }}:{{ hosts_value | join(',') }} {% endfor %}
如果需要保留原有的表头行,模板写法如下:
#ZONE HOST(S) OPTIONS {% for hosts_key, hosts_value in ip_allowed.items() %} {{ hosts_key }}:{{ hosts_value | join(',') }} {% endfor %}
逻辑说明
- 直接遍历
ip_allowed的键值对,每个键(列表名)仅输出一次,后接冒号 - 用
join(',')过滤器直接将列表格式的IP集合拼接为逗号分隔的字符串,无需手动循环拼接 - 外层循环每执行一次自动换一行,符合预期输出的换行要求
内容的提问来源于stack exchange,提问作者Pedro Kuramoto
相关产品推荐
相关产品推荐

