10.4. 使用 firewall RHEL 系统角色创建自定义 firewalld 服务


firewalld 中,服务是允许特定应用程序流量的规则集合。除了手动管理单个端口和协议外,管理员也可以使用服务名称打开流量。

您可以使用 firewall RHEL 系统角色自动创建自定义服务文件,从而使防火墙配置更简单且更易于重复使用。

先决条件

流程

  1. 创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml

    ---
    - name: Configure firewalld
      hosts: managed-node-01.example.com
      tasks:
        - name: Create a firewalld service
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.firewall
          vars:
            firewall:
              service: custom_service
              short: A custom firewalld service
              description: >-
                A custom firewalld service that opens port 2222/tcp and
                the ports opened by the http and https firewalld services.
              port: 2222/tcp
              includes:
                - http
                - https
              state: present
              permanent: true

    示例 playbook 中指定的设置包括如下:

    service: <service_name>
    设置服务的名称。
    short: <short_description>
    为服务设置简短描述。
    描述:&lt ;description>
    为服务设置长版描述。
    port: <port>/<protocol>
    定义服务文件允许的端口和协议。要定义多个条目,请使用 YAML 列表。
    包括:&lt ;services>
    可选:定义您要创建的服务的其他 firewalld 服务文件包括。
    state: present
    添加服务。如果服务已存在,则角色会按照定义进行修改。
    permanent: true

    启用 firewalld 的永久配置更改。

    有关 playbook 中使用的所有变量的详情,请查看控制节点上的 /usr/share/ansible/roles/rhel-system-roles.firewall/README.md 文件。

  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml

    请注意,这个命令只验证语法,不能防止错误的、但有效的配置。

  3. 运行 playbook:

    $ ansible-playbook ~/playbook.yml

验证

  • 显示您创建的服务定义:

    # ansible managed-node-01.example.com -m ansible.builtin.command -a 'firewall-cmd --info-service=custom_service'
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部