【问题标题】:How to change Firewalld zone using Ansible?如何使用 Ansible 更改 Firewalld 区域?
【发布时间】:2018-07-27 18:30:35
【问题描述】:

当我运行它时,它说成功,但默认界面仍设置为公共区域。什么给了?

- firewalld:
    zone: public
    interface: "{{ ansible_default_ipv4.interface }}"
    permanent: true
    immediate: true
    state: disabled

- firewalld:
    zone: trusted
    interface: "{{ ansible_default_ipv4.interface }}"
    permanent: true
    immediate: true
    state: enabled

【问题讨论】:

  • 这是在 RHEL 7 上
  • 您是否尝试过相反的方法,将接口放在trusted 中,然后将其从public 中删除。
  • 是的,我两种方式都试过了。我也尝试过不删除 public 并使其受信任,但它也不会那样工作。

标签: automation ansible firewall ansible-facts firewalld


【解决方案1】:

我不认为firewalld 模块支持这样设置默认区域。 The docszone 是:

添加/删除[规则]到/从firewalld区域

还有:

区域事务(创建、删除)可以仅使用区域和状态参数“present”或“absent”来执行。

我认为这意味着您可以创建/删除区域并在其中添加/删除规则,但不能将区域设置为默认值。这与我在使用与 OP 类似的配置时看到的行为一致。

我现在使用 command 模块在 Ansible 配置中设置默认区域,例如

- name: Set dmz as default policy
  command: firewall-cmd --set-default-zone=dmz

【讨论】:

    【解决方案2】:

    运行后,你有没有重新加载firewalld来生效?我从任务中看到的只是您禁用和启用它。您还可以添加处理程序以在完成https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html#handlers-running-operations-on-change 后重新启动服务。您还应该尝试使用 -vvv 运行以查看输出,看看它是否符合您的预期。

    【讨论】:

    • 我运行 -vvv 并显示成功/已更改。立即标志应该使它不需要重新加载,但我也将它重新加载到更远的位置,以便重新加载。 “永久和非永久(立即)操作,已更改(接口)为受信任区域”}
    • 所以如果你在底部重新加载,那么它看起来如何像目标主机?使用 pastebin 来放置日志,以便于阅读。
    • 它将所有设置应用到公共而不是信任,并且公共被设置为活动接口。
    • 阅读模块文档中的注释 ` 这是 firewalld 的一个限制。这也意味着您必须在添加要立即执行操作的区域后重新加载 firewalld。该模块不会隐含地为您处理此问题,因为这将撤消任何先前执行的非永久性立即操作。因此,如果您需要立即访问新创建的区域,建议您在区域创建返回并更改状态后立即重新加载 firewalld,然后再对该区域执行任何其他即时、非永久性操作。 `
    • 说“不起作用”并没有为我们提供足够的详细信息来进行更多故障排除。您应该在 pastebin 中显示所有剧本/角色以及您使用 -vvvv 执行的所有操作,以便更轻松地进行故障排除。你是否也检查过它是否是一个错误?什么版本的ansible?
    猜你喜欢
    • 2016-05-14
    • 2020-06-14
    • 2020-03-29
    • 1970-01-01
    • 2022-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多