playbook是由一个或多个”play”组成的列表。play的主要功能在于将事先归为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来将,所谓的task无法是调用ansible的一个module。将多个paly组织在一个playbook中,即可以让他们联通起来按事先编排的机制同唱一台大戏。
1、playbook基础组件:
hosts playbook中的每一个paly的目的都是为了让某个或某些以某个指定用户的身份执行任务。hosts用于指定要执行指定任务的主机,其可以是一个或多个由冒号分割主机组user remote_user则用于指定远程主机上的执行任务的用户。
一、ansible-playbook配置实例
- hosts: test \\主机组,在/etc/ansible/hosts定义
remote_user: root \\远端执行任务的用户
tasks: \\任务
-name: install httpd \\任务描述
command: yum -y install httpd \\调用ansible的command模块安装httpd
-name: provide httpd.conf \\任务描述
copy:src="/root/httpd.conf" dest="/etc/httpd/conf/httpd.conf" \\调用ansible的copy模块,httpd安装完成后将事先准备好的httpd.conf文件复制到/etc/httpd/conf目录下
tags: conf \\给此任务打标记,可单独执行标记的任务,使用 ansible-playbook -C 命令执行
notify: \\文件内容变更通知
- server restart \\通知到指定的任务
- name: server start \\任务描述
service: name=httpd state=started enabled=true \\调用ansible的service模块的属性定义安装完成httpd以后httpd服务的管理
handlers: \\定义接受关注的资源变化后执行的动作
- name: server restart \\任务描述
service: name=httpd state=restarted \\当关注的资源发生变化后调用service模块,采取的响应的动作
执行过程如下:
[root@node1 playbook]# ansible-playbook web.yml
PLAY [test] *******************************************************************
GATHERING FACTS ***************************************************************
ok: [172.16.2.13]
TASK: [install httpd] *********************************************************
changed: [172.16.2.13]
TASK: [provide httpd.conf] ****************************************************
changed: [172.16.2.13]
TASK: [server start] **********************************************************
changed: [172.16.2.13]
NOTIFIED: [server restart] ****************************************************
changed: [172.16.2.13]
PLAY RECAP ********************************************************************
172.16.2.13 : ok=5 changed=4 unreachable=0 failed=0</span>
二、ansible的roles使用
ansible的roles用于层次性、结构化地组织palybook。roles能够根据层次型结构自动装载变量文件、tasks及handlers等。要使用roles只需要playbook中使用include指令即可