一、playbook的介绍
playbook是ansible用于配置、部署及管理被控主机的剧本;ansible主控机通过在剧本文件中陈列一系列to-do-list从而达到对被控主机的管控
二、playbook的功能
ansible主控机在执行一些简单的任务时,使用Ad-Hoc命令的方式进行操作是比较方便的,但当某一项操作过于繁杂、需要进行大量的操作时,简单的命令方式既不利于阅读也容易出错;这种情况下使用playbook剧本可使操作逻辑变得清晰,从而更简便地对被控主机进行管理;ansible中的playbook类似于shell中的shell脚本
三、playbook的格式
playbook是由YMAL语言编写的
YAML(Yet Another Markup Lauguage)是一种表达资料序列的格式,类似于XML,首次发表于2001年,其官网是:www.yaml.org;YAML语言的特点是可读性好、易于实现、可扩展性强,其适用于程序执行流的梳理方式,和脚本语言的交互性好
YAML文件的语法格式:
文件首行以---开头(必须写)
次行一般书写文件内容
文件末行以...结尾(可忽略不写)
在同一行中,#号之后的内容表示注释
文件中的列表以-开头,后紧跟空格然后接元素内容
YAML语法缩进严格、字符大小写敏感,故同一列表中的元素应保持相同的缩进,否则会报错
文件采用键值(key/value)的书写方式;键值可以多行书写也可以写在一行,一行书写时用逗号
隔开;值(value)可以是字符串,也可以是一个list
YAML列表:
[Linux,C++,Java,Python] ##等同于以下
- Linux
- C++
- Java
- Python
YAML字典:
字典的作用==存放键值
{name: "httpd",state: "restarted",enabled: "yes"}
##等同于以下
name: httpd
state: restarted
enabled: yes
四、playbook的核心组件
playbook是由一个或多个play组成的列表
name ##描述;用于说明,可选择性书写
hosts ##被控主机列表
tasks ##任务即执行动作;用于选择执行部分代码
注意:一个name下只能包含一个tasks
playbook的剧本文件为xxxx.yml或xxxx.yaml格式
五、playbook的执行命令
ansible-playbook xxxx.yml/xxxx.yaml
可用参数有:
--check==-C ##检测(预执行)
--syntax-check ##检测语法
--list-hosts ##列出hosts
--list-tags ##列出tags
--list-tasks ##列出tasks
--limit ##指定执行主机
-v/-vv/-vvv ##显示详细过程
六、书写playbook文件时对vim的设定
autocmd FileType yaml set ai ts=2 sw=2 et
ai ##自动退格补齐
ts ##tab键长度为2空格
sw ##缩进长度
et ##将tab键空格可视化
autocmd FileType yaml ##次设定只对yaml文件生效