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