网络运营

ansible的“剧本”

简述

各位读者朋友,大家好,又到了和大家分享干货的时候啦,上周小普介绍的是关于ansible的各个模块的使用,你们都学会了吗?接下来要和大家分享的是关于ansible的一个高级功能,我在这简称它为ansible的“剧本”,即ansible的playbook功能。

 

playbook是什么?

playbook是由一个或多个”play”组成的列表。play的主要功能在于将事先归为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来将,所谓的task无法是调用ansible的一个module。将多个paly组织在一个playbook中,即可以让他们联通起来按事先编排的机制同唱一台大戏。

 

ansible的几个基本的组件

每个ansible要成功执行,都应该有以下的这些组件。

  1. Host

指的就是在host列表中的机器中执行ansible列出的命令

  1. Task

指的是按照tasklist中指定的任务,依次在host列表中的所有主机上执行。

  1. Action

指的是任务的执行过程

  1. Handlers

指的是用于当前关注的资源发生变化时采取一定指定的操作。

 

role(角色)

理解了以上的几个概念之后,你可以认为以上都是剧本的一个个部件,但是谁来承担这个执行的角色呢?于是还得再了解role(角色)的这个功能。Ansible中的role就是用来用于层次性、结构化地组织palybook,可以简单理解为以上的这4个部件的执行者。下面是关于实现ansible的playbook需要创建的目录和文件,他的结构是这样子的。PS:小普这次使用的是自家的云主机哦~ ~

[root@ecloud playbook]# tree roles/

roles/

└── nginx

├── default

├── files  \\存放有copy或script等模块调用的文件

│  ├── default.conf

│  └── nginx-1.4.7-1.el6.ngx.x86_64.rpm

├── handlers  \\用于定义各角色用到的各handler

│  └── main.yml

├── meta

├── tasks \\定义了此角色的任务列表,可使用include指令

│  └── main.yml

├── templates

│  └── nginx.conf

└── vars

 

实践

以下我列出一个实例,让大家之后ansible的playbook功能是怎么实现的。

[root@node1 playbook]# cat web.yml

– hosts: test

remote_user: root

tasks:

– name: install httpd

command: yum -y install httpd

– name: provide httpd.conf

copy: src=”/root/httpd.conf” dest=”/etc/httpd/conf/httpd.conf”

tags: conf

notify:

– server restart

– name: server start

service: name=httpd state=started enabled=true

handlers:

– name: server restart

service: name=httpd state=restarted

 

执行过程如下:

[root@Ecloud playbook]# ansible-playbook web.yml

PLAY [nginx] ******************************************************************

 

GATHERING FACTS ***************************************************************

ok: [172.16.2.13]

 

TASK: [nginx | copy nginx.rpm] ************************************************

ok: [172.16.2.13]

 

TASK: [nginx | install nginx] *************************************************

changed: [172.16.2.13]

 

TASK: [nginx | provides nginx.conf] *******************************************

changed: [172.16.2.13]

 

TASK: [nginx | provides default.conf] *****************************************

changed: [172.16.2.13]

 

TASK: [nginx | server start] **************************************************

changed: [172.16.2.13]

 

NOTIFIED: [nginx | server restart] ********************************************

changed: [172.16.2.13]

 

PLAY RECAP ********************************************************************

172.16.2.13                : ok=7    changed=5    unreachable=0    failed=0

 

然后查看nginx已经发现打开了相关的端口了。于是这里边成功的执行了一个playbooks的功能,赶快去试试吧,希望你也可以成功用上playbook的这个功能。

到这里小普分享的一系列的ansible的功能已经介绍玩啦,希望对你有所帮助,有疑问的小伙伴也可以在下面留言哦,小普看到的话,会抽时间回复的。然后关于下期,小普将会展开一个新的栏目,关于docker系列的学习,敬请期待哦!

Be the First to comment.

Leave a Comment

电子邮件地址不会被公开。 必填项已用*标注

146 views