
文章目录实验 13:Roles 角色结构与编写一、本章学习目标二、实验背景:为什么需要 Roles?2.1 没有 Roles 的困境2.2 Roles 的核心思想三、Role 标准目录结构双视角深度解析3.1 七大目录【专家视角】【小白视角】3.2 自动查找机制四、defaults vs vars —— 最容易混淆的知识点4.1 本质区别4.2 变量优先级完整排序(从低到高)4.3 实际示例五、Role 执行顺序详解5.1 自动加载顺序5.2 多 Role 的执行顺序5.3 Role 与 tasks 的混合执行六、Role 编写实战:Nginx Role 逐文件解析6.1 tasks/main.yml —— 任务入口6.2 handlers/main.yml —— 处理器6.3 templates/nginx.conf.j2 —— 主配置模板6.4 defaults/main.yml —— 默认变量6.5 vars/main.yml —— 内部变量6.6 meta/main.yml —— 元信息七、调用 Role 的三种方式7.1 方式一:roles 关键字(最常用)7.2 方式二:import_role(静态导入,可控制执行位置)7.3 方式三:include_role(动态包含,支持条件)八、企业级扩展:Role 开发规范8.1 命名规范8.2 一个完整的企业级 Role 目录8.3 README.md 模板许可证九、常见坑点与排错指南坑点 1:defaults 变量被 vars 覆盖不了坑点 2:模板文件找不到坑点 3:Handler 名称冲突坑点 4:Role 执行顺序不符合预期坑点 5:变量名冲突坑点 6:meta 中的 dependencies 导致重复执行十、本章小结十一、配套练习题(共 35 题,分三个难度梯度)【A 组:基础巩固题】(15 题)一、填空题(5 题)二、判断题(5 题)三、单项选择题(5 题)【B 组:进阶应用题】(12 题)四、不定项选择题(7 题)五、简答题(3 题)六、排错题(2 题)【C 组:企业级实战题】(8 题)七、综合设计题(4 题)八、深度原理题(4 题)十二、练习题参考答案A 组答案B 组答案C 组答案(评分要点)实验 13:Roles 角色结构与编写一、本章学习目标完成本实验后,你将能够:理解Roles 的设计哲学——将 Playbook 模块化、可复用化,实现"一次编写,到处使用"精通Role 的标准目录结构(7 个核心目录),清楚每个目录的作用和文件命名约定掌握defaults与vars的本质区别及优先级关系,能够设计可配置的高复用 Role熟练编写完整的 Nginx Role,包含任务、处理器、模板、默认变量、元信息理解Role 的自动加载机制和执行顺序,能够排查 Role 不生效、变量不覆盖等问题建立企业级 Role 开发规范,为后续 Ansible Galaxy 社区角色复用打下基础二、实验背景:为什么需要 Roles?2.1 没有 Roles 的困境经过 Day 2 的学习,你已经能写出功能完整的 Playbook。但当项目变大,问题随之而来:# ❌ 所有东西堆在一个文件里,500 行 P