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

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

相关推荐
芷栀夏15 小时前
飞牛NAS怎么部署Immich?家庭照片自动备份与远程访问教程
服务器·nginx·ansible
悠然南风11 天前
Ansible常见模块总结及LDAP Role 编写与调试
ansible
祺风挽楠20 天前
ansible编辑
网络·ansible
芳心粽伙饭20 天前
Ansible课后作业
ansible
烁34722 天前
Ansible初识
ansible
烁34722 天前
Ansible安装部署调试
ansible
烁34722 天前
Ansible命令
ansible
小义_22 天前
【Ansible】(三)基础配置与连接设置
云原生·ansible
炸炸鱼.1 个月前
Ansible 企业级实战:Playbook 与 Roles 完全指南
网络·ansible
风曦Kisaki1 个月前
# 自动化运维Day03:Ansible模块进阶(setup,debug),四种常用变量,进阶语法;Ansible Roles(角色)
运维·自动化·ansible