[英]Is there an Ansible/Jinja2 subgroup variables unique filter?
我们正在使用Ansible从Jinja2模板生成一些iptables规则。 主机位于嵌套组中,其子网作为变量存储在清单文件中的子组变量中,如下所示:
[parent_group]
[parent_group:children]
child_group1
[child_group1]
FQDN1
FQDN2
[child_group1:vars]
subnet=10.0.0.0/24
我们有许多子组,每个子组都有各自的主机组各自的子网/掩码。 大多数Ansible / Jinja2文档都通过使用for循环在其成员主机上进行迭代来引用组变量,这将导致模板文件中出现重复行。 一次获取parent_group的child_group变量的最佳方法是什么? 有没有办法在Jinja2 for循环中过滤唯一值?
经过对Jinja2表达式的摸索后,我能够提出以下模板,以基于子组变量创建规则,而没有重复项:
{% set subnets = [] %}
{% for host in groups['parent_group'] %}
{% if hostvars[host].subnet not in subnets %}
-A INPUT -s {{hostvars[host].subnet}} -j ACCEPT {{subnets.append(hostvars[host].subnet)}}
{% endif %}
{% endfor %}
这对我来说感觉很笨拙,因此,如果有人知道更好的方法,我将不胜感激。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.