10.4. 使用 firewall RHEL 系统角色创建自定义 firewalld 服务
在 firewalld 中,服务是允许特定应用程序流量的规则集合。除了手动管理单个端口和协议外,管理员也可以使用服务名称打开流量。
您可以使用 firewall RHEL 系统角色自动创建自定义服务文件,从而使防火墙配置更简单且更易于重复使用。
先决条件
- 您已准备好控制节点和受管节点。
- 您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
-
用于连接到受管节点的帐户具有这些节点的
sudo权限。
流程
创建一个包含以下内容的 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>- 为服务设置简短描述。
描述:< ;description>- 为服务设置长版描述。
port: <port>/<protocol>- 定义服务文件允许的端口和协议。要定义多个条目,请使用 YAML 列表。
包括:< ;services>-
可选:定义您要创建的服务的其他
firewalld服务文件包括。 state: present- 添加服务。如果服务已存在,则角色会按照定义进行修改。
permanent: true启用
firewalld的永久配置更改。有关 playbook 中使用的所有变量的详情,请查看控制节点上的
/usr/share/ansible/roles/rhel-system-roles.firewall/README.md文件。
验证 playbook 语法:
$ ansible-playbook --syntax-check ~/playbook.yml请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
运行 playbook:
$ ansible-playbook ~/playbook.yml
验证
显示您创建的服务定义:
# ansible managed-node-01.example.com -m ansible.builtin.command -a 'firewall-cmd --info-service=custom_service'