前面已经介绍过Ansible的安装配置及常见模块的使用 --《Linux下使用Ansible处理批量操作》
Palybook简介
palybook是由一个或多个paly组成的列表,play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来讲,所谓 task 无非是调用 ansible 的一个 module。将多个play组织在一个 playbook 中,即可以让它们联同起来按事先编排好的机制同唱一台大戏。
一个playbook由以下几个部分组成
hosts
:运行执行任务(task)的目标主机。remote_user
:在远程主机上执行任务的用户。tasks
:任务集。varniables
: 内置变量或自定义变量在playbook中调用,变量替换{{ variable_name }}。templates
:模板,即使用模板语法的文件,比如配置文件等,使用jinja2语法。handlers
:和notity结合使用,由特定条件触发的操作,满足条件方才执行,否则不执行。tags
:标签,指定某条任务执行,用于选择运行playbook中的部分代码。
注意:
gather_facts
是一个play级别的指令设置,是负责收集目标主机信息的任务,由setup
模块提供。默认情况下,每个play都会先执行这个特殊的任务,收集完信息之后才开始执行其它任务。但是,收集目标主机信息的效率很低,如果能够确保playbook中不会使用到所收集的信息,可以显式指定gather_facts: no
来禁止这个默认执行的收集任务。- handler用来执行某些条件下的任务,比如当配置文件发生变化的时候,通过
notify
触发handler
去重启服务。在saltstack中也有类似的触发器,写法相对Ansible简单,只需要watch,配置文件即可。
为什么引入Playbook?
- playBook功能比ad-hoc更全,是对ad-hoc的一种编排。
- playBook能很好的控制先后执行顺序,以及依赖关系。
- playBook语法展现更加的直观。
- playbook可以持久使用,ad-hoc无法持久使用。
YAML的基本语法规则
- playbook文件扩展名可以是
yaml
,也可以是yml
。使用“#”号表示注释至行尾。 - 在playbook文件中,可以连续三个减号(---)区分多个play。还有选择性的连续三个点(...)用来表示play的结尾,也可省略。
- 第二行开始正常写playbook的内容,一般都会写上描述该playbook的功能。建议尽量为每个
play
和每个task
都命名,且名称具有唯一性。 - 只允许使用空格,缩进的级别必须是一致的,同样的缩进代表同样的级别,不能用
Tab
键缩进;程序判别配置的级别是通过缩进结合换行实现的。 - YAML文件内容是区分大小写的,
key/value
的值均需大小写敏感。多个key/value
可同行写也可换行写。同行使用分号( 标签:name,--,ansible,host,Ansible,playbook,path,梳理 From: https://www.cnblogs.com/zhangwencheng/p/17772930.html