playbook的使用
Ansible Playbook与临时命令
临时命令可以作为一次性命令对一组目标主机运行一项简单的任务。想要深入了解下去,需要了解如何使用playbook以便轻松重复的方式对一组目标主机执行多项复杂的任务。
play是针对清单中选定的主机运行的一组有序任务。playbook是一个文本文件,其中包含由一个或多个按特定顺序运行的play组成的列表。(可以反复使用编写的代码,同时可以存放在不同的机器上去)
Play可以将一系列冗长而复杂的手动管理任务转变为可轻松重复的例程(就是简单化了),并且具有可预测的成功成果。在playbook中,可以将play内的任务序列保存为人类可读并可立即运行的形式。根据任务的编写方式,任务本身记录了部署应用或基础架构所需的步骤
语法基础
- playbook由YAML语言编写,按照YAML标准
- 在同一行中,#键之后的内容表示注释
- 在同一列表中的元素应该保持相同的缩进
- 由一个或多个play组成
- 开头以—开头,表示一个文件的开始
- 第一行 - name:称之为ID(不能一致) ,同一个ID下同一个模块只能用一次
- 运行时按写时的顺序开始逐渐运行
- 不能用Tab键进行缩进
构成
Hosts:运行执行任务(task)的目标主机
remote_user:在远程主机上执行任务的用户
tasks:任务列表
handlers:任务,与tasks不同的是只有在接受到通知时才会被触发
templates:使用模板语言的文本文件,使用jinja2语法。
variables:变量,变量替换
运行playbook命令
ansible-playbook +web.yml(此文件可以修改为自创的任何名称)
实施单个play
例
编写一个单任务
[root@ansible ~]# cd /etc/ansible/
[root@ansible ansible]# mkdir playbook
[root@ansible ansible]# cd playbook/
[root@ansible playbook]# vim web.yml
[root@ansible playbook]# cat web.yml
---
- name:task1 #任务名
gather_facts: no #禁止 Ansible 收集 facts 信息
hosts:192.168.230.97 #在任务中将执行的主机
tasks: #任务
- name: create user for zizi #任务名称
user: #用户模块
name: zizi #用户名称
uid: 6000 #配置uid
state: present #用户状态
[root@ansible playbook]# ansible-playbook --syntax-check web.yml #检查语法问题
playbook: web.yml #出现这个说明没问题,若出现红色字体,则为错误
运行playbook
[root@ansible playbook]# ansible-playbook -C web.yml
PLAY [task1] *******************************************************************
TASK [Gathering Facts] *********************************************************
ok: [192.168.230.97]
TASK [create user for zizi] ****************************************************
changed: [192.168.230.97]
PLAY RECAP *********************************************************************
192.168.230.97 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
配置Playbook执行的输出详细程序
ansible-playbook -v命令提供了额外的信息,共有四个级别
-V | 看运行细节,只显示任务结果 |
---|---|
-VV | 较详细的,显示结果的基础上显示配置 |
-VVV | 更详细的,内包括关于受管主机连接的信息 |
-VVVV | 增强了详细选项,包括受管主机上用于执行脚本的用户以及所执行的脚本 |
[root@ansible playbook]# ansible-playbook web.yml -v
Using /etc/ansible/ansible.cfg as config file
PLAY [task1] *******************************************************************
TASK [Gathering Facts] *********************************************************
ok: [192.168.230.97]
TASK [create user for zizi] **********