Ansible:firewalld并添加新区域

时间:2017-02-17 09:15:53

标签: ansible firewalld

我'试图将以下内容添加到Ansible剧本中:

dockerc

但根据these区域,没有添加新区域的选项。

是否有人知道是否可以使用Ansible将{{1}}添加为新区域?

2 个答案:

答案 0 :(得分:3)

不幸的是,firewalld模块不适合创建新区域。如果您的主机上有firewall-cmd,那么您只需单独运行它即可:

- command: firewall-cmd --permanent --new-zone dockerc

设置区域后,您可以正常使用该模块:

- firewalld:
    zone: dockerc
    permanent: true
    source: 172.17.0.0/16
    state: enabled

如果你不能单独使用firewall-cmd命令,那么你可能运气不好,因为检查source code of the module你可以看到它不包含创建新区域的代码。< / p>

但请注意,此模块是ansible内部的Curated模块,这意味着它无法获得完整的Core支持。如果您了解python,那么欢迎您发送拉取请求以使该模块能够创建新区域。

答案 1 :(得分:2)

从2017年12月12日开始,特别是提交8475171f67f,firewalld模块支持区域的创建(和删除)。

- firewalld:
    zone: custom
    state: present
    permanent: true

state设置为presentabsent,并确保zonestatepermanent是任务中的唯一键

来自source code

的笔记
  
      
  • 区域事务(创建,删除)只能通过使用区域和状态参数“存在”或“不存在”来执行。   请注意,区域事务必须明确地是永久的。这是防火墙的限制。   这也意味着您必须在添加要执行立即操作的区域后重新加载防火墙。   该模块不会为您暗中处理此问题,因为这将撤消之前执行的所有立即操作,   不   常驻。因此,如果您需要立即访问新创建的区域,建议您在之后立即重新加载firewalld   区域   创建会返回状态已更改的状态,并在对该区域执行任何其他立即的非永久性操作之前。
  •