文章目录Ansible Roles 企业级重构:从入门到实战第一部分:Roles 入门概念1.1 为什么要用 Roles?1.2 Roles 标准目录结构1.3 各目录作用详解1.4 变量优先级(从低到高)1.5 Roles 调用方式第二部分:LNMP Roles 架构规划2.1 角色拆分设计2.2 角色依赖关系2.3 与旧结构对比第三部分:从零创建 Roles 结构3.1 创建目录骨架第四部分:编写 common 公共角色4.1 defaults/main.yml(默认变量)4.2 tasks/main.yml(任务入口)4.3 tasks/system.yml(系统优化)4.4 tasks/firewall.yml(防火墙)4.5 tasks/selinux.yml(SELinux)4.6 handlers/main.yml4.7 templates/chrony.conf.j24.8 meta/main.yml(元数据)第五部分:编写 mysql 角色5.1 defaults/main.yml5.2 tasks/main.yml(任务入口)5.3 tasks/install.yml5.4 tasks/configure.yml5.5 tasks/service.yml5.6 tasks/secure.yml(安全初始化 + 幂等改密)5.7 tasks/database.yml5.8 tasks/firewall.yml5.9 tasks/backup.yml5.10 tasks/verify.yml5.11 handlers/main.yml5.12 templates/my.cnf.j25.13 templates/mysql_backup.sh.j25.14 meta/main.yml第六部分:编写 php 角色6.1 defaults/main.yml6.2 tasks/main.yml6.3 tasks/install.yml6.4 tasks/configure_ini.yml6.5 tasks/configure_fpm.yml6.6 tasks/opcache.yml6.7 tasks/service.yml6.8 tasks/selinux.yml6.9 tasks/verify.yml6.10 handlers/main.yml6.11 templates/php.ini.j26.12 templates/[www.conf.j2](http://www.conf.j2)6.13 templates/opcache.ini.j26.14 meta/main.yml第七部分:编写 nginx 角色7.1 defaults/main.yml7.2 tasks/main.yml7.3 tasks/install.yml7.4 tasks/configure_main.yml7.5 tasks/configure_vhost.yml7.6 tasks/site.yml7.7 tasks/selinux.yml7.8 tasks/service.yml7.9 tasks/firewall.yml7.10 tasks/verify.yml7.11 handlers/main.yml7.12 templates/nginx.conf.j27.13 templates/vhost.conf.j27.14 meta/main.yml第八部分:编写主 Playbook 和全局配置8.1 inventory.ini(统一清单)8.2 group_vars/all.yml(全局变量)8.3 site.yml(主 Playbook)8.4 可选:独立 Playbook(按需执行单个组件)第九部分:验证 Roles 结构9.1 查看完整目录树9.2 语法检查9.3 列出所有任务(不执行)第十部分:部署执行10.1 干跑预览10.2 正式部署10.3 按标签选择性执行10.4 变量覆盖示例第十一部分:部署后验证11.1 全链路验证脚本第十二部分:Roles 运维规范12.1 日常运维命令12.2 配置变更标准流程12.3 Role 复用方法12.4 Role 版本管理执行步骤总结Ansible Roles 企业级重构:从入门到实战第一部分:Roles 入门概念1.1 为什么要用 Roles?对比项当前写法(单文件 Playbook)Roles 写法代码组织所有任务堆在一个 yml 文件里按角色拆分,每个角色独立目录复用性换个项目要复制粘贴改半天直接roles_path引用,零修改可维护性500 行文件,改一个参数要翻半天变量集中在defaults/main.yml,改一处全局生效团队协作多人改同一个文件,容易冲突每人负责一个 role,互不干扰变量优先级