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个组里

 

posted @ 2021-08-23 23:33  吴焕  阅读(120)  评论(0)    收藏  举报