当前位置: 首页 > news >正文

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

文章目录

  • 一、核心功能描述
  • 二、roles内容
    • 2.1 文件结构
    • 2.2 主配置文件
    • 2.3 tasks文件内容

免费个人运维知识库,欢迎您的订阅: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 文件结构

firewalld/
`-- tasks|-- add_rule.yml|-- del_rule.yml`-- main.yml1 directory, 3 files

2.2 主配置文件

---
- hosts: 192.141.106.24remote_user: rootserial: 5roles:- firewalld

2.3 tasks文件内容

  • main.yml
- include: del_rule.yml
- include: add_rule.yml
  • include: del_rule.yml
- name: del ports rule 19100firewalld: port=19100/tcp zone=public permanent=yes immediate=yes state=disabled
  • include: add_rule.yml
- name: add ipsetsshell: 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 19100firewalld:permanent: yeszone: publicrich_rule: rule family=ipv4 source ipset=test port protocol=tcp port=19100 acceptstate: enabled- name: firewalld reloadservice: name=firewalld state=reloaded

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

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

http://www.xdnf.cn/news/1330597.html

相关文章:

  • 如何使用matlab将目录下不同的excel表合并成一个表
  • 四川方言语音识别数据集,1500小时合规真人采集,高质量标注助力ASR与大模型训练
  • CISP-PTE之路--10文
  • java17学习笔记
  • python numpy.random的基础教程(附opencv 图片转数组、数组转图片)
  • cv2.bitwise_and是 OpenCV 中用于执行按位与运算的核心函数,主要用于图像处理中的像素级操作
  • 计算机视觉 图片处理 在骨架化过程中,每次迭代都会从图像的边缘移除一层像素,直到只剩下单像素宽度的骨架
  • 【图像算法 - 19】慧眼识苗:基于深度学习与OpenCV的大棚农作物生长情况智能识别检测系统
  • Kubernetes集群安装部署--flannel
  • InnoDB为什么使用B+树实现索引?
  • 从繁琐到优雅:Java Lambda 表达式全解析与实战指南
  • 【Spring Boot把日志记录到文件里面】
  • sfc_os!SfcQueueValidationRequest函数分析之sfc_os!IsFileInQueue
  • Android面试指南(三)
  • STM32学习笔记15-SPI通信软件控制
  • 《Java 多线程全面解析:从基础到生产者消费者模型》
  • InfoNES模拟器HarmonyOS移植指南
  • 从数据孤岛到实时互联:Canal 驱动的系统间数据同步实战指南
  • 排查Redis数据倾斜引发的性能瓶颈
  • python学习DAY46打卡
  • 迁移学习(Transfer Learning)
  • C语言:字符函数与字符串函数(1)
  • Go 进阶学习路线
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(17):文法+单词第5回3-复习
  • 《算法导论》第 32 章 - 字符串匹配
  • 云电脑 vs 传统PC:全面对比3A游戏与AI训练的成本与性能
  • 网络间的通用语言TCP/IP-网络中的通用规则3
  • 基于提示词工程和MCP构建垂直Agent应用
  • STM32 vscode 环境, 官方插件
  • 前端多环境变量配置全攻略:开发 / 测试 / 生产自动切换实战