2026/9/23 4:21:18
网站建设
项目流程
文章目录 实验 13:Roles 角色结构与编写 一、本章学习目标 二、实验背景:为什么需要 Roles? 2.1 没有 Roles 的困境 2.2 Roles 的核心思想 三、Role 标准目录结构双视角深度解析 四、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 题) 十二、练习题参考答案 实验 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