自动化运维工具Ansible-playbook之role使用(五)

1、role介绍

ansible自1.2版本后引入的新特性,用于层次性、结构性的组织playbook。Roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。简单来说,roles就是通过分别将变量、文件、任务、模板以及处理器放置于单独的目录中,并可以便捷的include他们的一种机制。角色一般基于主机结构构建服务的场景中,但也可以是用于构建守护进程等场景中。

Ansible的roles目录结构

project/   项目名称,有以下子目录
	tasks/  定义task、role的基本元素,至少包含一个名为main.yaml的文件;其他需要的文件在此通过include进行包含
	files/  存放由copy或者script模块调用的文件
	vars/ 不常用,定义变量;至少包含一个名为main.yaml的文件;其他需要的文件在此通过include进行包含
	default/ 不常用,设定默认变量时使用此目录中的main.yaml
	templates/  template模块查找所需要的模板问文件的目录
	handlers/
	meta/  不常用,定义当前角色的特殊设定以及依赖关系

2、案例

在其中一台服务器上部署nginx,在两台服务器上部署tomcat,通过nginx做个反向代理,实现服务的轮询访问。
在这里插入图片描述

2.1 role的总入口文件

cat install.yml

- hosts: 10.99.200.110
  remote_user: root
  gather_facts: false
  roles:
   - nginx

- hosts: test
  remote_user: root
  gather_facts: false
  roles:
   - tomcat

2.2 nginx部署

在这里插入图片描述

step1:定义变量

cat vars/main.yml

# defile nginx deploy host ip
nginx_ip: '10.99.200.110'
nginx_port: 10086
nginx_core: 4
nginx_user: 'root'

tomcat_server: 'TMS'
tomcat_server1: '10.99.200.110'
tomcat_server2: '10.99.200.111'
tomcat_port1: 8080
tomcat_port2: 8080
step2:部署nginx

cat main.yml

- name: unpress nginx
  unarchive: src=install_nginx-1.16.1.tar.gz dest=/tmp/
  tags:
  - unpress

- name: install nginx
  shell: cd /tmp/install_nginx-1.16.1 && bash install.sh

- name: replace nginx conf
  template: src=nginx.conf.ji2 dest=/usr/local/nginx/conf/nginx.conf
  notify:
  - reload-nginx
  tags:
  - reload nginx

- name: start nginx
  shell: /etc/init.d/nginx -s reload
step3:nginx配置文件模板

cat templates/nginx.conf.ji2

user {
    
    {
    
     nginx_user }};
worker_processes  {
    
    {
    
     nginx_core }};

events {
    
    
    worker_connections  51200;
    accept_mutex on;
    multi_accept on;
    use epoll;
}

http {
    
    
    include       mime.types;
    default_type  application/octet-stream;
    client_max_body_size 500M;
    client_header_buffer_size 4k;
    server_tokens off;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /usr/local/nginx/logs/access.log  main;
    send_timeout 60;
    tcp_nodelay     on;
    underscores_in_headers on;
    keepalive_timeout  120;
    gzip  on;
    gzip_min_length  10k;
    gzip_buffers     16 64k;
    gzip_http_version 1.1;
    gzip_comp_level 3;
    gzip_types       text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json;
    gzip_disable "MSIE [1-6]\.";
    gzip_vary on;

    proxy_temp_path /usr/local/nginx/ngx_cache 1 2;
    proxy_cache_path /usr/local/nginx/ngx_cache/temp levels=1:2 keys_zone=content:1024m inactive=2d max_size=10G;
    
    upstream {
    
    {
    
     tomcat_server }} {
    
    
      server {
    
    {
    
     tomcat_server1 }}:{
    
    {
    
     tomcat_port1 }}; 
      server {
    
    {
    
     tomcat_server2 }}:{
    
    {
    
     tomcat_port2 }}; 
    }
    server {
    
    
        listen       {
    
    {
    
     nginx_port }};
        server_name  {
    
    {
    
     nginx_ip }};
        location / {
    
    
            root   html;
            index  index.html index.htm;
            proxy_pass http://{
    
    {
    
     tomcat_server }};
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
    
    
            root   html;
        }
    }
include      /usr/local/nginx/conf/conf.d/*.conf;
}
step4:nginx触发操作

cat handlers/main.yml

- name: reload-nginx
  shell: /etc/init.d/nginx -s reload

2.3 tomcat部署

在这里插入图片描述

step1:定义tomcat的安装参数

cat vars/main.yml

扫描二维码关注公众号,回复: 13029180 查看本文章
# defile tomcat deploy args
tomcat_path: "/u01/isi/application"
tomcat_version: "apache-tomcat-9.0.33"
step2:部署tomcat

cat tasks/main.yml

# install tomcat
- name: unpress pacakges
  unarchive: src={
    
    {
    
     tomcat_version }}.tar.gz dest={
    
    {
    
     tomcat_path }}

- name: copy scripts for tomcat 
  copy: src=start.sh dest={
    
    {
    
     tomcat_path }}/{
    
    {
    
     tomcat_version }} mode=0755

- name: copy scripts for tomcat
  copy: src=stop.sh dest={
    
    {
    
     tomcat_path }}/{
    
    {
    
     tomcat_version }} mode=0755

- name: start tomcat
  shell: cd {
    
    {
    
     tomcat_path }}/{
    
    {
    
     tomcat_version }} && source /etc/profile && ./start.sh
step3:编写tomcat的启动脚本

cat files/start.sh

#!/bin/bash
cd /u01/isi/application/apache-tomcat-9.0.33
nohup ./bin/startup.sh &

cat files/stop.sh

#!/bin/bash
ps -ef | grep apache-tomcat-9.0.33 | grep -v grep | awk '{print $2}' | xargs kill -9

2.4 检测并执行role文件

ansible-playbook --check install.yml在这里插入图片描述
ansible-playbook install.yml
在这里插入图片描述

2.5 浏览器验证

前台浏览器验证在这里插入图片描述
后台日志验证
在这里插入图片描述

3、文件获取

链接:https://pan.baidu.com/s/1sHN790EMUISV1P9Okqwa_A 
提取码:juey 

都到这儿了,扫一扫吧!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44729138/article/details/114943658