ansible playbook 实战案例roles | 实现基于firewalld添加端口

文章目录

免费个人运维知识库,欢迎您的订阅:literator_ray.flowus.cn

一、核心功能描述

这个 Ansible Role (firewalld) 的核心功能是:动态地、安全地配置 firewalld,实现基于指定 IPSet 的白名单规则,精确控制特定 TCP 端口的访问权限。

关键特性与可变性:​

  1. 灵活的端口控制:​

    • 核心任务是管理一个特定的 TCP 端口

    • 端口号(如示例中的 19100)是完全可配置的变量。Role 可以通过变量轻松应用于管理任何 TCP 端口。

  2. 动态的 IP/IP 段管理 (基于 IPSet):​

    • 访问控制的核心是使用 ipset

    • IPSet 名称 ​(如示例中的 test)是可配置的

    • 允许访问的 IP 地址或网段 ​(如示例中的 192.141.254.0/24, 192.142.254.0/24)是可变且可扩展的列表 。Role 可以通过修改 loop 列表轻松添加、删除或更改允许的源 IP 范围。

  3. 基于 IPSet 的精细化访问规则:​

    • 创建一个 firewalld富规则 (rich rule)​

    • 该规则利用配置好的 ​IPSet 名称 ​ 作为源 (source ipset=...)。

    • 该规则针对配置好的 ​TCP 端口 ​ (port protocol=tcp port=...)。

    • 规则动作是明确允许符合条件(匹配 IPSet 来源且访问目标端口)的流量 (accept)。

  4. 安全的变更过程:​

    • 在添加新规则前,​总是先删除目标端口上可能存在的旧规则 ​(通过 del_rule.yml)。这确保了:

      • 避免规则冲突或重复。

      • 提供幂等性(多次运行结果一致)。

      • 为新的、基于 IPSet 的规则提供一个干净的状态起点。

    • 配置采用 permanent: yes 确保规则持久化。

    • 执行重载 (reloaded) 使所有变更(IPSet 创建/更新、规则添加/删除)​立即生效

可以根据自己的实际需求修改脚本

二、roles内容

2.1 文件结构

Plain 复制代码
firewalld/
`-- tasks
    |-- add_rule.yml
    |-- del_rule.yml
    `-- main.yml

1 directory, 3 files

2.2 主配置文件

Plain 复制代码
---
- hosts: 192.141.106.24
  remote_user: root
  serial: 5
  roles:
    - firewalld

2.3 tasks文件内容

  • main.yml
Plain 复制代码
- include: del_rule.yml
- include: add_rule.yml
  • include: del_rule.yml
Plain 复制代码
- name: del ports rule 19100
  firewalld: port=19100/tcp zone=public permanent=yes immediate=yes state=disabled
  • include: add_rule.yml
Plain 复制代码
- name: add ipsets
  shell: firewall-cmd --permanent --new-ipset=test --type=hash:ip;firewall-cmd --permanent --ipset=test --add-entry={{ item }}
  loop:
    - 192.141.254.0/24
    - 192.142.254.0/24  

- name: add port rule 19100
  firewalld:
    permanent: yes
    zone: public
    rich_rule: rule family=ipv4 source ipset=test port protocol=tcp port=19100 accept
    state: enabled

- name: firewalld reload
  service: name=firewalld state=reloaded

如果你不请什么是ansible中的角色,动动你的小手,跳转过去看看呗"roles角色"

请不要以此视为定论,这只是我的个人经验

相关推荐
2302_7995257412 分钟前
【ansible】2.实施ansible playbook
linux·运维·ansible
IT成长日记4 小时前
【自动化运维神器Ansible】Playbook调用Role详解:从入门到精通
运维·自动化·ansible·playbook·role
小白不想白a4 小时前
【Ansible】将文件部署到受管主机1:文件模块
ansible
skywalk81634 小时前
设计简洁的Ansible:目前非常流行的开源配置管理和自动化工具
开源·自动化·ansible
2302_799525744 小时前
【ansible】4.实施任务控制
linux·服务器·ansible
2401_831501734 小时前
Linux之Ansible自动化运维(二)
运维·自动化·ansible
wdxylb20 小时前
云原生俱乐部-RH294知识点归纳(1)
云原生·ansible
拾心212 天前
【运维进阶】Ansible 角色管理
运维·ansible
phoenix09812 天前
ansible部署lnmp-allinone
linux·运维·ansible