ansible firewalld 规则中的 jinja2 模板

jinja2 template in ansible firewalld rule

我正在使用 firewalld 模块中的 richrule 在 ansible 剧本中编写 firewalld 规则。在其中我需要对不同的源 ip 地址使用相同的规则。 例如:在规则中写为,

rich_rule= rule family='ipv4' source address='xxx.xxx.xxx.xxx' protocol value='icmp' accept

我只需要更改地址。因此,为此我必须使用 jinja2 模板应用不同的 ip 地址。 为此,我在方法中编写了如下规则:

rich_rule= rule family='ipv' source address="{{ lookup('file', './src.txt') }}" protocol value="icmp" accept 

并通过在 src 文件中添加 ip 地址来执行它。但是我不能添加一个以上的地址。所以对我来说,应该从文本文件中选择几个 ip 地址并应用规则 那么有什么办法可以做到这一点?如果有人知道可以完成的方法,请帮助我。

提前致谢

尝试使用 ansible 清单文件。您可以定义一个列表并根据需要为源地址提供尽可能多的值,然后在您的剧本中遍历它们。

在清单中添加:

source-address:
  - 'xxx.xxx.xxx.xxx'
  - 'yyy.yyy.yyy.yyy'
  - 'zzz.zzz.zzz.zzz'

在剧本中添加一个循环来遍历 source-address 变量,如:

- name: Rules
  rich_rule: rule
  family: 'ipv'
  source_address: "{{ item }}" 
  protocol_value: "icmp"
  with_items: '{{ source-address }}'

请注意上面代码段中的 with_items。在这里,您基本上是循环遍历清单中定义的列表 source-address 的项目。

希望对您有所帮助。