简介
Playbooks 与 adhoc 相比,是一种完全不同的运用 ansible 的方式,是非常之强大的. 简单来说,playbooks 是一种简单的配置管理系统与多机器部署系统的基础.与现有的其他系统有不同之处,且非常适合于复杂应用的部署. Playbooks 可用于声明配置,更强大的地方在于,在 playbooks 中可以编排有序的执行过程,甚至于做到在多组机器间,来回有序的执行特别指定的步骤.并且可以同步或异步的发起任务
playbook语法规则
-
:缩进 yaml使用一个固定的缩进风格表示数据层结构关系,Saltstack需要每个缩进级别由两个空格组成。一定不能使用tab键(tab在vim编辑中是8个空格)
-
:冒号 每个冒号后面一定要有一个空格(以冒号结尾不需要空格,表示文件路径的模版可以不需要空格)
-
:短横线 想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一个列表的一部分。 核心规则:有效的利用空格进行剧本的编写,剧本编写是不支持tab的。
重点 剧本编写是不支持tab的
playbook编写格式
剧本开头,可以不写
这两项必须要写:
- hosts:(空格)all 处理所有服务器 #也可以这样 - hosts: 172.16.1.7 #处理指定服务器 tasks: 剧本要干的事
剧本编写方式
01.多主机单任务编写方式
02.多主机多任务编写方式
03.不同主机多任务编写方式
多主机单任务编写方式示范
[root@pa1 ~]#ansible-playbook test.yml
PLAY [all] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [58.87.104.81]
ok: [120.78.202.71]
TASK: [add user lijinghua] ****************************************************
ok: [58.87.104.81]
changed: [120.78.202.71]
PLAY RECAP ********************************************************************
120.78.202.71 : ok=2 changed=1 unreachable=0 failed=0
58.87.104.81 : ok=2 changed=0 unreachable=0 failed=0
脚本示范
[root@pa1 ~]#cat test.yml
- hosts: all
tasks:
- name: del user lijinghua
user: name=lijinghua state=absent
多主机多任务编写方式
[root@pa1 ~]#ansible-playbook test.yml
PLAY [58.87.104.81] ***********************************************************
GATHERING FACTS ***************************************************************
ok: [58.87.104.81]
TASK: [del user lijinghua] ****************************************************
changed: [58.87.104.81]
PLAY [120.78.202.71] **********************************************************
GATHERING FACTS ***************************************************************
ok: [120.78.202.71]
TASK: [del user lijinghua] ****************************************************
changed: [120.78.202.71]
PLAY RECAP ********************************************************************
120.78.202.71 : ok=2 changed=1 unreachable=0 failed=0
58.87.104.81 : ok=2 changed=1 unreachable=0 failed=0
脚本示范
[root@pa1 ~]#cat test.yml
- hosts: 58.87.104.81
tasks:
- name: del user lijinghua
user: name=lijinghua state=absent
- hosts: 120.78.202.71
tasks:
- name: del user lijinghua
user: name=lijinghua state=absent
playbook的其他辅助参数:
ansible-playbook --check
测试,只检测可能会发生的改变,但不真正执行操作;
ansible-playbook --list-hosts
列出运行任务的主机;
ansible-playbook --list-tasks
列出要运行的任务列表
ansible-playbook --syntax-check
语法检查