playbook的介绍和使用
1 实施playbook
1.1 ansible playbook与临时命令
临时命令可以作为一次性命令对一组目标主机运行一项简单任务。要真正发挥ansible的作用,需要解决如何使用playbook以便轻松重复的方式对一组目标主机执行多项复杂的任务 (临时命令 ad-hoc)
play是针对清单中选定的主机运行的一组有序任务。playbook是一个文本文件,包含由一个或多个按特定顺序运行的play组组成的列表
Play可以将一系列冗长而复杂的手动管理任务转变为可轻松重复的例程,并且具有可预测的成功成果。在playbook中,可以将play内的任务序列保存为人类可读并可立即运行的形式。根据任务的编写方式,任务本身记录了部署应用或基础架构所需的步骤
1.2 格式化Ansible Playbook
例子:
[root@ansible ~]# ansible 192.168.136.219 -m user -a 'name=wqtsd uid=9999 state=present'
写成playbook文本形式
[root@ansible playbook]# vim ww.yml
[root@ansible playbook]# pwd
/etc/ansible/playbook
---
- name: #内容标题
hosts: 192.168.136.219 #对应的受控主机
tasks: #任务
- name: create user #任务的名字
user: #使用的模块
name: wqtsjz #用户名称
uid: 8888 #相关参数
state: present #创建
Playbook是以yml格式编写的文本文件,通常使用扩展名yml保存。playbook使用空格字符缩进来表示其数据结构,yml对用于缩进的空格数量没有严格要求,但有两个基本规则:
- 处于层次结构中同一级别的数据元素必须具有相同的缩进量
- 如果项目属于其他项目的子项目,其缩进量必须大于父项
只有空格字符可用于缩进,不允许使用tab键
Playbook开头的一行由三个破折号(—)组成。这是文章开始标记,其末尾可能使用三个圆点(…)作为结束标记,可省略
Play本身是一个键值对集合。同一play中的键应当使用相同的缩进量。
作为play中的一部分,tasks属性按顺序实际列出要在受管主机上运行的任务。列表中各项任务本身是一个键值对集合。
还以上面创建用户的play为例,play中唯一任务有两个键:
- name是记录任务用途的可选标签。最好命名所有的任务,从而帮助记录自动流程中的每一步用途。
- user是要为这个任务运行的模块。其参数作为一组键值对传递,它们是模块的子项(name、uid和state&#