Ansible-playbook简介
什么是playbook?
简单点说,playbook就是ansible用于配置,部署和管控节点机器的剧本,将一系列命令的集合归一使用,类似于shell脚本,不过更加强大.
playbook与shell脚本比对
它们功能形似,playbook和shell脚本一样,都是批量处理任务.都是把很多命令组合到一起,加入对应条件判断等,要说区别就是命令结构和被执行场景有所不同;
shell脚本由一条条命令构成,一般只在当前的服务器运行;
playbook中是有一个个task任务构成,每个task都可以当做shell中的一条命令,playbook不止在一个服务器上执行,因此它需要在其中指定运行该playbook的服务器名.而且playbook有着自己的语法格式
playbook语法格式
playbook由YMAL语言编写,YMAL格式类似于JSON格式,便于写读和理解,它的格式如下:
#格式
1.文件的第一行应该以 "---"这三个连续字符开始,代表了YAML文件的开始
2.在一行中, # 后面的内容代表注释,python,ruby,shell都是如此
3.YAML中的列表元素以"-"开头然后紧接着一个空格,后面为元素内容
4.在同一个列表中的元素应该保持相同的缩进,否则会当作错误处理
5.play中hosts ,variables,roles,tasks等对象的表示方法都是键值对,中间以 ":"分割,且":"后面还要增加一个空格.
6.文件名称后缀为 xxx.yml/yaml
#示例
---
#复制file
- hosts: task01
remote_user: root
tasks:
- name: copyfile
copy: src=/etc/passwd dest=/tmp/data
Ansible-playbook使用
playbook核心参数
hosts #主机组 tasks #任务列表 vars #变量,如下有几种设置方式 template #jinja2模板语法 tags #标签 handlers #由一定条件出发,就是notify咯
① 基本参数
#写法
--- #文件开头 - hosts: dbservers #指定该playbook在哪个服务器上执行 remote_user: root #指定远程的用户名, vars: #表示定义变量 http_port: 80 #变量形式key: value user: coco tasks: #构成playbook的tasks,每个task都有 - name: 开始,name 指定该任务的名称 - name: copyfile copy: src=/etc/fstab dest=/tmp/fs - name: install redis yum: name=redis
② ansible-playbook -h命令分析
#常用命令 -C --check #检查但是不会真的执行 -f FORKS, --forks=FORKS #并发,默认5个 --list-hosts #列出匹配的主机 --sytax-check #检查语法
-t #只执行某个task任务
③ 执行一个playbook命令 --->ansible-playbook p1.yml (单任务)
#p1.yml --- - hosts: web tasks: - name: install bc yum: name=bc
注解:如上图所示
- PLAY表示执行hosts 中web组远程机器
- 第一个TASK表示正在收集两台远程机器的数据信息,采集成功为显示绿色,代表执行成功
- 第二个TASK表示我们要执行任务的名称,执行成功后状态发生变化为黄色,状态没变化为绿色,执行失败为红色.
④ 再来个例子ansible-playbook p2.yml(多任务)看看效果,会更加清楚
#p2.yml --- - hosts: web remote_user: root tasks: - name: createuser user: name=coco - name: deluser user: name=coco state=absent