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角色"

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

相关推荐
迷茫的大专生9 天前
服务器部署与 MySQL 运维学习笔记:从 Ansible 到高可用与性能优化
mysql·nginx·ansible·mysql优化·keepalive
杜子不疼.11 天前
Ansible 批量部署 Node Exporter:从单机安装流程到远程主机统一执行
ai·ansible
运维全栈笔记12 天前
Ansible 自动化 Nginx 集群部署实战:动态 Inventory、滚动发布与 Role 工程化
nginx·自动化·ansible
User_芊芊君子17 天前
让异构增量同步飞起来-KFS全链路并行同步方案
运维·自动化·ansible
あ-19 天前
ansible-playbook安装seaweedfs三节点集群
ansible
数安旭说20 天前
终端防火墙深度拆解:网络隔离、进程级管控与流量治理的落地避坑指南
网络·数据安全·企业安全·防火墙·终端安全·终端防火墙·违规外联
Tassel_YUE21 天前
非 ansible 主机批量执行命令方法:psssh 和 pscp(随手记)
linux·网络·ssh·scp·ansible
亿朝亿夕1 个月前
ansible安装
ansible
.柒宇.1 个月前
运维常见面试题_07_配置管理与监控(Ansible · Prometheus · Alertmanager)· 容器编排(Kubernetes)
运维·k8s·ansible·prometheus
相顾若初见1 个月前
Ansible部署k8s
容器·kubernetes·ansible