简介

当我们刚开始学习运用 playbook 时,可能会把 playbook 写成一个很大的文件,到后来可能你会希望这些文件是可以方便去重用的,所以需要重新去组织这些文件。

Include 语句

基本上,使用 include 语句引用 task 文件的方法,可允许你将一个配置策略分解到更小的文件中。使用 include 语句引用 tasks 是将 tasks 从其他文件拉取过来。因为 handlers 也是 tasks,所以你也可以使用 include 语句去引用 handlers 文件。

Playbook 同样可以使用 include 引用其他 playbook 文件中的 play。这时被引用的 play 会被插入到当前的 playbook 中,当前的 playbook 中就有了一个更长的的 play 列表。Include 指令看起来像下面这样,在一个 playbook 中,Include 指令可以跟普通的 task 混合在一起使用:

tasks:
- include: tasks/foo.yml

你也可以给 include 传递变量。我们称之为 ‘参数化的 include’。

tasks:
- include: wordpress.yml wp_user=timmy

Playbook 角色(Roles)

那怎样组织 playbook 才是最好的方式呢?简单的回答就是:使用 roles ! Roles 的概念来自于这样的想法:通过 include 包含文件并将它们组合在一起,组织成一个简洁、可重用的抽象对象。这种方式可使你将注意力更多地放在大局上,只有在需要时才去深入了解细节。Roles 基于一个已知的文件结构,去自动的加载某些 vars_files,tasks 以及 handlers。基于 roles 对内容进行分组,使得我们可以容易地与其他用户分享 roles 。

这个 playbook 为一个角色 ‘x’ 指定了如下的行为:

  • 如果 roles/x/tasks/main.yml 存在, 其中列出的 tasks 将被添加到 play 中
  • 如果 roles/x/handlers/main.yml 存在, 其中列出的 handlers 将被添加到 play 中
  • 如果 roles/x/vars/main.yml 存在, 其中列出的 variables 将被添加到 play 中
  • 如果 roles/x/meta/main.yml 存在, 其中列出的 “角色依赖” 将被添加到 roles 列表中 (1.3 and later)
  • 所有 copy tasks 可以引用 roles/x/files/ 中的文件,不需要指明文件的路径。
  • 所有 script tasks 可以引用 roles/x/files/ 中的脚本,不需要指明文件的路径。
  • 所有 template tasks 可以引用 roles/x/templates/ 中的文件,不需要指明文件的路径。
  • 所有 include tasks 可以引用 roles/x/tasks/ 中的文件,不需要指明文件的路径。

角色依赖(Role Dependencies)

“角色依赖” 使你可以自动地将其他 roles 拉取到现在使用的 role 中。”角色依赖” 保存在 roles 目录下的 meta/main.yml 文件中。这个文件应包含一列 roles 和 为之指定的参数,

最新文章

  1. git 教程(15)--分支管理策略
  2. java filechannel大文件的读写
  3. Runas命令:能让域用户/普通User用户以管理员身份运行指定程序。
  4. 9、java中的final关键字
  5. python中xrange和range的异同
  6. [转]优秀Python学习资源收集汇总
  7. Bluez alpha版震撼发布!
  8. 4、BOM编程/正则表达式
  9. 15个实用的Linux find命令示例(一)
  10. sublime text2注册码
  11. 通过DeveloperApi获取spark程序执行进度及异常
  12. Seoer,牵起用户与搜索引擎双手的魔术师
  13. rman备份优化思路
  14. JavaScript中的坑--全局变量惹得祸
  15. 【转载】mysql binlog日志自动清理及手动删除
  16. JQuery ajax 前后端传值介绍
  17. sample function
  18. C# 创建 读取 更新 XML文件
  19. English trip V1 - 22. My Life Teacher:Emily Key: describe talk about past 过去式
  20. ERROR in index.web.js from UglifyJs

热门文章

  1. SSTI
  2. pod管理调度约束、与健康状态检查
  3. SAP client锁定
  4. spring boot 集成 websocket 实现消息主动
  5. 3A的限流芯片PW1503
  6. 1.8V转3V,1,8V转3.3V电源芯片的规格书参数
  7. linux opt, usr文件夹说明
  8. 如何安装快速 Docker 和 Docker-Compose 服务
  9. What is the difference between Serialization and Marshaling?
  10. Linux的.a、.so和.o文件 windows下obj,lib,dll,exe的关系 动态库内存管理 动态链接库搜索顺序 符号解析和绑定 strlen函数的汇编实现分析