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