role下载地址 链接:https://pan.baidu.com/s/1DVdt1iykf8z9kqlaqW9p6Q 提取码:cnkx 复制这段内容后打开百度网盘手机App,操作更方便哦
架构

roles目录结构
[root@localhost roles]# tree
.
├── keepalived
│   ├── files
│   ├── handlers
│   │   └── main.yml
│   ├── tasks
│   │   └── main.yml
│   ├── templates
│   │   ├── backup_keepalived.conf.j2  #主keepalived配置文件
│   │   └── master_keepalived.conf.j2  #从keepalived配置文件
│   └── vars
│       └── main.yml
├── nginx
│   ├── default
│   │   └── main.yml
│   ├── files
│   │   ├── nginx-1.16.0.tar.gz    #nginx源码包
│   │   └── nginx.service            #systemctl接管nginx服务文件
│   ├── handlers
│   │   └── main.yml
│   ├── meta
│   │   └── main.yml
│   ├── tasks
│   │   └── main.yml
│   ├── templates
│   │   └── nginx.conf.ji2           #nginx配置文件
│   └── vars
│       └── main.yml
├── site.yml
└── tomcat
    ├── default
    │   └── main.yml
    ├── files
    │   ├── apache-tomcat-8.5.37.tar.gz   #tomcat二进制包
    │   └── jdk-8u144-linux-x64.gz          #jdk二进制包
    ├── handlers
    │   └── main.yml
    ├── meta
    │   └── main.yml
    ├── tasks
    │   └── main.yml
    ├── templates
    │   ├── java.sh.j2                    #初始java环境变量文件
    │   ├── setclasspath.sh.j2        #tomcat设置java环境变量脚本
    │   └── tomcat.service.j2         #systemctl接管tomcat服务文件
    └── vars
        └── main.yml  
site.xml
- hosts: lb remote_user: root roles: - nginx - hosts: server remote_user: root roles: - tomcat - hosts: lb remote_user: root roles: - keepalived
nginx roles
#安装gcc环境
- name: install gcc env
  yum: name={{ item }} state=present 
  with_items:
  - gcc
  - patch
  - libffi-devel
  - python-devel
  - zlib-devel
  - bzip2-devel
  - openssl-devel 
  - ncurses-devel
  - sqlite-devel
  - readline-devel
  - tk-devel
  - gdbm-devel
  - libpcap-devel
  - xz-devel
  - openssl
  - openssl-devel
#拷贝nginx源码包到目标机器
- name: unarchive nginx.tar.gz
  unarchive: src=nginx-1.16.0.tar.gz dest=/tmp/
  tags:
  - jieya
#编译nginx
- name: bianyi nginx
  shell: cd /tmp/nginx-1.16.0 && ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module && make && make install
  tags:
  - bianyi
#复制systemctl接管nginx的服务文件
- name: copy nginx.service
  copy: src=nginx.service dest=/usr/lib/systemd/system/nginx.service
#重载systemd
- name: systemctl daemon-reload  
  shell: /usr/bin/systemctl daemon-reload
#复制nginx配置文件
- name: copy nginx.conf
  template: src=nginx.conf.ji2 dest=/usr/local/nginx/conf/nginx.conf
  notify: 
  - reload-nginx
  tags:
  - reload nginx
#启动nginx
- name: start nginx
  service: name=nginx state=started enabled=true  
- name: reload-nginx shell: name=nginx state=reloaded
worker_processes  {{ ansible_processor_vcpus }};
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream tomcat {
        server {{ TOMCAT_SERVER1 }};
        server {{ TOMCAT_SERVER2 }};
    }
    server {
        listen       80;
        server_name  localhost;
        location / {
            proxy_pass http://tomcat;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
TOMCAT_SERVER1: 192.168.2.5:8080 TOMCAT_SERVER2: 192.168.2.6:8080
Tomcat roles
#复制jdk到目标主机
- name: cp jdk1.8
  unarchive: src=jdk-8u144-linux-x64.gz dest=/usr
#创建链接
- name: jdk setup
  file: src=/usr/jdk1.8.0_144 path={{ JAVA_HOME }} state=link
#配置java环境变量脚本
- name: jdk env
  template: src=java.sh.j2 dest=/etc/profile.d/java.sh 
#加载环境变量
- name: source java
  shell: source /etc/profile.d/java.sh
#复制tomcat到目标主机
- name: cp tomcat
  unarchive: src=apache-tomcat-8.5.37.tar.gz dest=/usr/
#创建链接
- name: tomcat setup
  file: src=/usr/apache-tomcat-8.5.37 path={{ CATALINA_HOME }} state=link
#配置tomcat环境变量
- name: tomcat env
  template: src=setclasspath.sh.j2 dest={{ CATALINA_HOME }}/bin/setclasspath.sh
  
#复制systemd接管tomcat的服务文件
- name: cp tomcat.service
  template: src=tomcat.service.j2 dest=/usr/lib/systemd/system/tomcat.service
#重载systemd
- name: daemonreload
  shell: /usr/bin/systemctl daemon-reload
#启动tomcat
- name: start tomcat
  service: name=tomcat state=started enabled=true
export JAVA_HOME={{ JAVA_HOME }}
export PATH=$JAVA_HOME/bin:$PATH
#!/bin/sh
export JAVA_HOME={{ JAVA_HOME }}
# Licensed to the Apache Software Foundation (ASF) under one or more
#.....
#.....
#只需要配置java_home,其他的默认
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart={{ CATALINA_HOME }}/bin/startup.sh
ExecStop={{ CATALINA_HOME }}/bin/shutdown.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
JAVA_HOME: /usr/java CATALINA_HOME: /usr/tomcat
Keepalived roles
#安装keepalived - name: install keepalived yum: name=keepalived state=present #复制主配置文件 - name: copy master_conf template: src=master_keepalived.conf.j2 dest=/etc/keepalived/keepalived.conf when: ansible_default_ipv4.address == "192.168.2.3" notify: - restart keepalived #复制从配置文件 - name: copy backup_conf template: src=backup_keepalived.conf.j2 dest=/etc/keepalived/keepalived.conf when: ansible_default_ipv4.address == "192.168.2.4" notify: - restart keepalived #重启keepalived - name: start keepalived service: name=keepalived state=started
! Configuration File for keepalived
 
global_defs {
   #notification_email {
   #  acassen@firewall.loc
   #  failover@firewall.loc
   #  sysadmin@firewall.loc
   #}
   #notification_email_from Alexandre.Cassen@firewall.loc
   #smtp_server 192.168.200.1
   #smtp_connect_timeout 30
   router_id {{ master_router_id }}
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
 
vrrp_instance VI_1 {
    state MASTER
    interface {{ ansible_default_ipv4.alias }}
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        {{ virtual_ipaddress }}
    }
}
! Configuration File for keepalived
 
global_defs {
   #notification_email {
   #  acassen@firewall.loc
   #  failover@firewall.loc
   #  sysadmin@firewall.loc
   #}
   #notification_email_from Alexandre.Cassen@firewall.loc
   #smtp_server 192.168.200.1
   #smtp_connect_timeout 30
   router_id {{ backup_router_id }}
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
 
vrrp_instance VI_1 {
    state BACKUP
    interface {{ ansible_default_ipv4.alias }}
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        {{ virtual_ipaddress }}
    }
}
virtual_ipaddress: 192.168.2.88 master_router_id: MA master_priority: 100 master_ipaddress: 192.168.2.3 master_state: MASTER backup_router_id: BA backup_priority: 99 backup_ipaddress: 192.168.2.4 backup_state: BACKUP
- name: restart keepalived service: name=keepalived state=restarted
ansible-role安装nginx,keepalived,tomcat
原文:https://www.cnblogs.com/forlive/p/12591761.html