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
的项目。
希望对您有所帮助。
我正在使用 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
的项目。
希望对您有所帮助。