ansible基础-ansible角色的使用

一:Roles的概述

Roles能够根据层次型结构自动装载变量文件、task以及handlers等。
简单来讲,Roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们。
Roles一般用于基于主机构建服务的场景中,但也可以用于构建守护进程等场景中。

1.1:Roles的目录

目录名称具体含义
files用来存放由copy模块或script模块调用的文件
templates用来存放j正则模板,template模块会自动在此目录中寻找正则模板文件
tasks此目录应当包含一个main.yml文件,用于定义此角色的任务列表,此文件可以使用include包含其它的位于此目录的task文件
handlers此目录应当包含一个main.yml文件,用于定义此角色中触发条件时执行的动作
vars此目录应当包含一个main.yml文件,用于定义此角色用到的变量
defaults此目录应当包含一个main.yml文件,用于为当前角色设定默认变量
meta此目录应当包含一个main.yml文件,用于定义此角色的特殊设定及其依赖关系

二:安装搭建LAMP架构实例演示

2.1:创建服务组件工作目录

mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} -p
mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -p
mkdir /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta} -p

'查看目录'
[root@shuai ~]# cd /etc/ansible/roles/
[root@shuai roles]# ls
httpd  mysql  php

[root@shuai roles]# ls httpd/
defaults  files  handlers  meta  tasks  templates  vars
[root@shuai roles]# ls mysql/
defaults  files  handlers  meta  tasks  templates  vars
[root@shuai roles]# ls php/
defaults  files  handlers  meta  tasks  templates  vars

2.2:创建yaml文件

touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/php/{defaults,vars,tasks,meta,handlers}/main.yml

2.3:编写http模块

'写一个简单的task/main.yml'
vim /etc/ansible/roles/httpd/tasks/main.yml

- name: ensure apache is at the latest version 
  yum: pkg={{ shuai }} state=latest
  
'定义变量,可以定义在全局变量中,也可以定义在roles角色变量中,一般定义在角色变量中'  
vim /etc/ansible/roles/httpd/vars/main.yml 
shuai: httpd

2.4:编写mysql模块

vim /etc/ansible/roles/mysql/tasks/main.yml 

- name: ensure mysql is at the latest version
  yum: pkg={{ shuai }} state=latest

'定义变量'
vim /etc/ansible/roles/mysql/vars/main.yml
shuai: mariadb*

2.5:编写php模块

vim /etc/ansible/roles/php/tasks/main.yml 

- name: ensure php is at the latest version
  yum: pkg={{ shuai }} state=latest

'定义变量'
vim /etc/ansible/roles/php/vars/main.yml
shuai: php*

2.6:编写roles实例控制里面服务

vim /etc/ansible/site.yml

- hosts: webservers
  remote_user: root
  roles:
   - httpd
   - mysql
   - php

'执行剧本'
ansible-playbook site.yml 
PLAY [webservers] **********************************************************************************************

TASK [Gathering Facts] *****************************************************************************************
ok: [20.0.0.46]

TASK [httpd : ensure apache is at the latest version] **********************************************************
ok: [20.0.0.46]

TASK [ensure mysql is at the latest version] *******************************************************************
changed: [20.0.0.46]
...省略信息........

安装完成后,查询验证指定服务是否安装

[root@localhost ~]# rpm -q httpd
httpd-2.4.6-93.el7.centos.x86_64
[root@localhost ~]# rpm -q mariadb
mariadb-5.5.65-1.el7.x86_64
[root@localhost ~]# rpm -q php*
php-5.4.16-46.1.el7_7.x86_64

本次角色使用安装已经完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值