【问题标题】:Ansible: firewalld and adding new zoneAnsible:防火墙和添加新区域
【发布时间】:2017-07-06 17:45:55
【问题描述】:

我正在尝试将以下内容添加到 Ansible 剧本中:

firewall-cmd --permanent --new-zone dockerc
firewall-cmd --permanent --zone dockerc --add-source 172.17.0.0/16
firewall-cmd --permanent --zone dockerc --add-port 8443/tcp
firewall-cmd --permanent --zone dockerc --add-port 53/udp

但根据http://docs.ansible.com/ansible/firewalld_module.html 区域没有添加新区域的选项。

有谁知道是否可以使用 Ansible 将 dockerc 添加为新区域?

【问题讨论】:

  • 您可以随时使用命令或 shell 模块运行 firewall-cmd
  • @Magick 你能改变接受的答案吗?当前接受的不再有效。该模块现在可以创建新区域。我刚刚测试了它(第二个答案)。谢谢:)

标签: ansible firewalld


【解决方案1】:

截至 2017 年 12 月 12 日,具体提交 8475171f67f,firewalld 模块支持创建(和删除)区域。

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

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

来自source code的笔记

  • 区域事务(创建、删除)只能通过使用区域和状态参数“present”或“absent”来执行。 请注意,区域事务必须明确地是永久性的。这是 firewalld 的一个限制。 这也意味着您必须在添加要立即执行操作的区域后重新加载 firewalld。 该模块不会隐含地为您处理此问题,因为这将撤消之前执行的任何立即操作 不是 永恒的。因此,如果您需要立即访问新创建的区域,建议您在之后立即重新加载 firewalld 区域 在您对该区域执行任何其他即时的、非永久性的操作之前,创建会以更改的状态返回。

【讨论】:

    【解决方案2】:

    不幸的是,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 您可以看到它不包含创建新区域的代码。

    但是请注意,这个模块是 ansible 中的一个 Curated 模块,这意味着它没有得到完整的核心支持。如果您了解 python,那么欢迎您发送拉取请求以使该模块能够创建新区域。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-14
      • 1970-01-01
      • 1970-01-01
      • 2016-02-27
      • 1970-01-01
      • 2017-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多