Ad-hoc模式的缺点
每一条ansible命令只能对被管理主机执行一个ansible模块
如果一个运维任务包含了大量相关的运维操作,比如对一个服务的运维,涉及了服务的安装、配置、日志文件收集等等操作,通过敲ansible命令的方式实现,就太繁琐了
Ansible Playbook模式
将相关运维操作集合在一个playbook文件中,通过执行playbook文件,可以快速完成运维操作
ansible playbook文件就相当于一个脚本,将运维相关的各类操作组合在一起;playbook还可以通过循环、条件判断等功能实现更为灵活的运维逻辑
一、Playbook语法
1、Playbook文件以.yml为后缀名
YAML语法
文件开头第一行,必须是- - -,即三条横线
YAML语法中,“-”用于定义一个列表,列表中的元素是并列关系
2、Playbook由一到多个Play组成;每一Play定义了相关的一组运维任务
1)、Play的组成
由各类键值对(key-value pair)组成
对哪些被管理主机进行操作——hosts键值对
对被管理主机执行的任务列表——tasks键值对
2)、hosts键值对的定义
hosts:主机组名/主机名/主机IP地址
3)、tasks键值对的定义
tasks:
任务列表
4)、任务的定义
指定该任务所要执行的模块及其参数
方式1:
- name: 任务的描述性信息(可选,但推荐使用)
模块名: 参数1=值1 参数2=值2 … 参数n=值n
方式2:
- name: 任务的描述性信息
模块名:
参数1: 值1
参数2: 值2
…
参数n: 值n
二、Playbook的执行
ansible-playbook playbook文件路径 [-i 主机清单文件]
默认按照playbook中的play的顺序,以及play中任务的顺序,自上而下顺序执行
默认情况下,只有当某一任务在所有被管理主机上都执行完毕后,才会执行下一任务
默认情况下,当某一任务在某台被管理主机上执行失败时,会造成该主机后续任务执行的中断
默认情况下,ansible会同时在5台被管理主机上执行同一任务,可以设置任务并行执行的主机数量,以加快运维进度
显示Playbook任务执行的细节
ansible-playbook -v
Playbook中任务执行情况返回值
ok
任务执行成功,但任务模块的执行没有对主机产生修改
changed
任务执行成功,任务模块的执行对主机产生了修改
failed
任务执行失败
skipped
任务被跳过
Playbook语法检查
ansible-playbook --syntax-check
Playbook测试运行
ansible-playbook -C
Playbook先测试再运行
ansible-playbook playbook文件路径 -C
ansible-playbook playbook文件路径
Playbook的幂等性
如果对被管理主机重复执行playbook,并不会对被管理主机造成负面影响,则称该playbook具有幂等性
原文地址:http://www.cnblogs.com/tjane/p/16905704.html