1.15.2. 使用防火墙 RHEL 系统角色重置 firewalld 设置

使用 firewall RHEL 系统角色,您可以将 firewalld 设置重置为其默认状态。如果在变量列表中添加 previous:replaced 参数,则系统角色会删除所有现有用户定义的设置,并将 firewalld 重置为默认值。如果将 previous:replaced 参数与其他设置相结合,则 firewall 角色会在应用新设置前删除所有现有设置。

在 Ansible 控制节点上运行此步骤。

先决条件

  • ansible-corerhel-system-roles 软件包在控制节点上安装。
  • 如果在运行 playbook 时使用了与 root 不同的远程用户,则您必须在受管节点上有合适的 sudo 权限。
  • 使用 firewall RHEL 系统角色配置的一个或多个受管节点。

流程

  1. 如果要在其上执行 playbook 中指令的主机还没有被列入清单,请将此主机的 IP 或名称添加到 /etc/ansible/hosts Ansible 清单文件中:

    node.example.com
  2. 使用以下内容创建 ~/reset-firewalld.yml playbook:

    - name: Reset firewalld example
      hosts: node.example.com
      tasks:
        - name: Reset firewalld
          include_role:
            name: rhel-system-roles.firewall
          vars:
            firewall:
              - previous: replaced
  3. 运行 playbook:

    1. 以 root 用户身份连接到受管节点:

      # ansible-playbook -u root ~/reset-firewalld.yml
    2. 以用户身份连接到受管节点:

      # ansible-playbook -u user_name --ask-become-pass ~/reset-firewalld.yml

      ask-become-pass 选项可确保 ansible-playbook 命令提示输入 -u user_name 选项中定义的用户的 sudo 密码。

如果没有指定 -u user_name 选项,ansible-playbook 以当前登录到控制节点的用户身份连接到受管节点。

验证

  • 在受管节点上以 root 用户身份运行这个命令,以检查所有区域:

    # firewall-cmd --list-all-zones

其他资源

  • /usr/share/ansible/roles/rhel-system-roles.firewall/README.md
  • ansible-playbook(1)
  • firewalld(1)