ansible-role安装nginx,keepalived,tomcat
1 2 3 4 | role下载地址 链接:https://pan.baidu.com/s/1DVdt1iykf8z9kqlaqW9p6Q 提取码:cnkx 复制这段内容后打开百度网盘手机App,操作更方便哦 |
架构
roles目录结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | [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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | - hosts: lb remote_user: root roles: - nginx - hosts: server remote_user: root roles: - tomcat - hosts: lb remote_user: root roles: - keepalived |
nginx roles
- tasks/main.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #安装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 |
- handlers/main.yml
1 2 | - name: reload-nginx shell: name=nginx state=reloaded |
- templates/main.yml:这个配置文件需要更具自己业务对应更改,不要复制下面的配置文件,主要是为了替换里面的内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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; } } } |
- vars/main.yml
1 2 | TOMCAT_SERVER1: 192.168.2.5:8080 TOMCAT_SERVER2: 192.168.2.6:8080 |
Tomcat roles
- tasks/main.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #复制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 |
- templates/java.sh.j2
1 2 | export JAVA_HOME={{ JAVA_HOME }} export PATH=$JAVA_HOME /bin :$PATH |
- /templates/setclasspath.sh.j2
1 2 3 4 5 6 | #!/bin/sh export JAVA_HOME={{ JAVA_HOME }} # Licensed to the Apache Software Foundation (ASF) under one or more #..... #..... #只需要配置java_home,其他的默认 |
- templates/tomcat.service.j2
1 2 3 4 5 6 7 8 9 10 11 12 | [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 |
- vars/main.yml
1 2 | JAVA_HOME: /usr/java CATALINA_HOME: /usr/tomcat |
Keepalived roles
- tasks/main.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #安装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 |
- templates/master_keepalived.conf.j2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | ! 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 }} } } |
- templates/backup_keepalived.conf.j2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | ! 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 }} } } |
- vars/main.yml
1 2 3 4 5 6 7 8 9 10 11 | 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 |
- handlers/main.yml
1 2 | - name: restart keepalived service: name=keepalived state=restarted |
初学linux,每学到一点东西就写一点,如有不对的地方,恳请包涵!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能