Ansible之Playbook
playbook是由一个或多个“play”组成的列表
play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来讲,所谓task无非是调用ansible的一个module。将多个play组织在一个playbook中,即可以让它们联同起来按事先编排的机制同唱一台大戏
Playbook采用YAML语言编写
语法简介:
1 在单一档案中,可用连续三个连字号(-)区分多个档案。另外,还有选择性的连续三个点号(...)用来表示档案结尾 2 次行开始正常写Playbook的内容,一般建议写明该Playbook的功能 3 使用#号注释代码 4 缩进必须是统一的,不能空格和tab混用 5 缩进的级别也必须是一致的,同样的缩进代表同样的级别,程序判别配置的级别是通过缩进结合换行来实现的 6 YAML文件内容是区别大小写的,k/v的值均需大小写敏感 7 k/v的值可同行写也可换行写。同行使用:分隔 8 v可是个字符串,也可是另一个列表 9 一个完整的代码块功能需最少元素需包括 name: task 10 一个name只能包括一个task 11 YAML文件扩展名通常为yml或yaml
数据结构:
1. List:列表,其所有元素均使用“-”打头
- Apple
- Orange
- Strawberry
- Mango
也可以用[]来写:[Apple,Orange,Strawberry,Mango]
2. Dictionary 字典,由多个键值对组成
name: Example Developer
job: Developer
skill: Elite
也可以用{}来写:{name: Example Developer,job: Developer,skill: Elite}
字典与列表可以相互嵌套
1 Hosts 执行的远程主机列表 2 Tasks 任务集 3 Varniables 内置变量或自定义变量在playbook中调用 4 Templates 模板,可替换模板文件中的变量并实现一些简单逻辑的文件 5 Handlers 和notity结合使用,由特定条件触发的操作,满足条件方才执行,否则不执行 6 tags 标签 指定某条任务执行,用于选择运行playbook中的部分代码。ansible具有幂等性,因此会自动跳过没有变化的部分,即便如此,有些代码为测试其确实没有发生变化的时间依然会非常地长。此时,如果确信其没有变化,就可以通过tags跳过此些代码片断
关于HOSTS:
: 或,两组的并集 :& 两组的交集 :! 在第一个组且不在第2个组里
浙公网安备 33010602011771号