一、概述
- playbook与ad-hoc相比,是一种完全不同的运用ansible的方式,类似与saltstack的state状态文件。ad-hoc无法持久使用,playbook可以持久使用。
- playbook是由一个或多个play组成的列表,play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。
- 从根本上来讲,所谓的task无非是调用ansible的一个module。将多个play组织在一个playbook中,即可以让它们联合起来按事先编排的机制完成某一任务。
参考文档:https://ansible-tran.readthedocs.io/en/latest/docs/playbooks.html
Ansible 的基础介绍和环境部署可以参考我这篇文章:Ansible 介绍与实战操作演示
二、playbook 核心元素
- Hosts执行的远程主机列表
- Tasks任务集
- Varniables内置变量或自定义变量在playbook中调用
- Templates模板,即使用模板语法的文件,比如配置文件等
- Handlers和notity结合使用,由特定条件触发的操作,满足条件方才执行,否则不执行
- Tags标签,指定某条任务执行,用于选择运行playbook中的部分代码。
三、playbook 语法(yaml)
- playbook使用yaml语法格式,后缀可以是yaml,也可以是yml。
- YAML( /ˈjæməl/ )参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822,Clark Evans在2001年5月在首次发表了这种语言,另外Ingy döt Net与OrenBen-Kiki也是这语言的共同设计者。
- YAML格式是类似JSON的文件格式。YAML用于文件的配置编写,JSON多用于开发设计。
1)YAML 介绍
1、YAML 格式如下
- 文件的第一行应该以“—”(三个连字符)开始,表明YAML文件的开始。
- 在同一行中,#之后的内容表示注释,类似于shell,python和ruby。
- YAML中的列表元素以“-”开头并且跟着一个空格。后面为元素内容。
- 同一个列表之中的元素应该保持相同的缩进,否则会被当做错误处理。
- play中hosts、variables、roles、tasks等对象的表示方法都是以键值中间以“:”分隔表示,并且“:”之后要加一个空格。