【问题标题】:jinja2 template in ansible firewalld ruleansible firewalld 规则中的 jinja2 模板
【发布时间】:2020-06-29 09:21:45
【问题描述】:

我正在使用 firewalld 模块中的 richrule 在 ansible playbook 中编写 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 jinja2 var


【解决方案1】:

尝试使用 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 }}'

注意上面 sn-p 中的with_items。在这里,您基本上是在清单中定义的列表source-address 的项目上循环。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    相关资源
    最近更新 更多