码迷,mamicode.com
首页 > 其他好文 > 详细

自动化运维工具ansible 角色Roles介绍(三)

时间:2018-10-31 20:16:38      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:restart   play   book   部署   def   clu   default   oss   不同   

一.角色(roles)介绍
技术分享图片
角色定制:roles
对于以上所有的方式有个弊端就是无法实现复用假设在同时部署Web、db、ha 时或不同服务器组合不同的应用就需要写多个yml文件。很难实现灵活的调用。

roles 用于层次性、结构化地组织playbook。roles 能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用

roles只需要在playbook中使用include指令即可。简单来讲,roles就是通过分别将变量(vars)、文件(file)、任务(tasks)、模块

(modules)及处理器(handlers)放置于单独的目录中,并可以便捷地include它们的一种机制。角色一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程等场景中。

roles目录结构
角色集合:roles/

mysql/

httpd/

nginx/

files/:存储由copy或script等模块调用的文件;

tasks/:此目录中至少应该有一个名为main.yml的文件,用于定义各task;其它的文件需要由main.yml进行”包含”调用;

handlers/:此目录中至少应该有一个名为main.yml的文件,用于定义各handler;其它的文件需要由main.yml进行”包含”调用;

vars/:此目录中至少应该有一个名为main.yml的文件,用于定义各variable;其它的文件需要由main.yml进行”包含”调用;

templates/:存储由template模块调用的模板文本;

meta/:此目录中至少应该有一个名为main.yml的文件,定义当前角色的特殊设定及其依赖关系;其它的文件需要由main.yml进行”包含”调用;

default/:此目录中至少应该有一个名为main.yml的文件,用于设定默认变量;

实验:角色定制:roles
1、在roles目录下生成对应的目录结构
cd /etc/ansible/roles

mkdir -pv ./{nginx,mysql,httpd}/{files,templates,vars,tasks,handlers,meta,default}

我们就以定义nginx角色为例

2、定义tasks/main.yml的配置文件
vim /etc/ansible/roles/nginx/tasks/main.yml

name: cp
copy: src=nginx-1.10.2-1.el7.ngx.x86_64.rpm dest=/tmp/nginx-1.10.2-1.el7.ngx.x86_64.rpm

name: install
yum: name=/tmp/nginx-1.10.2-1.el7.ngx.x86_64.rpm state=latest

name: conf
template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf

tags: nginxconf

notify: new conf to reload

name: start service
service: name=nginx state=started enabled=true

3.将最新版本的nginx rpm包下载到/etc/ansible/roles/nginx/files下
cd /etc/ansible/roles/nginx/files

lftp 172.17.0.1

cd /pub/Sources/7.x86_64/nginx

get nginx-1.10.2-1.el7.ngx.x86_64.rpm

quit

4.在/etc/ansible/roles/nginx/templates中配置模板文件
cp /etc/nginx/nginx.conf /etc/ansible/roles/nginx/templates/nginx.conf.j2

vim nginx.conf.j2

将nginx监听端口和cpu颗数设置为变量

5.在/etc/ansible/roles/nginx/vars目录下配置变量文件mian.yml
cd /etc/ansible/roles/nginx/vars

vim main.yml

nginxport: 6666

只配置端口变量就行了,cpu颗数变量是內建的,不用声明

6.配置handlers文件

cd /etc/ansible/roles/nginx/handlers

vim main.yml

name: new conf to reload
service: name=nginx state=restarted

7.定义/etc/ansible/roles.yml的playbook文件
hosts: web
remote_user: root

roles:

nginx
只需定义主机组,远程连接的用户和角色(角色可以配置多个)

8.测试,执行剧本

ansible-playbook roles.yml 执行成功

查看端口

文件目录结构:
.

├── httpd

│ ├── default

│ ├── files

│ ├── handlers

│ ├── meta

│ ├── tasks

│ ├── templates

│ └── vars

├── mysql

│ ├── default

│ ├── files

│ ├── handlers

│ ├── meta

│ ├── tasks

│ ├── templates

│ └── vars

└── nginx

├── default

├── files

│ └── nginx-1.10.2-1.el7.ngx.x86_64.rpm

├── handlers

│ └── main.yml

├── meta

├── tasks

│ └── main.yml

├── templates

│ └── nginx.conf.j2

└── vars

└── main.yml

自动化运维工具ansible 角色Roles介绍(三)

标签:restart   play   book   部署   def   clu   default   oss   不同   

原文地址:http://blog.51cto.com/anfishr/2311376

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!