使用ansible依次更新两个tomcat应用

该博客详细介绍了如何使用Ansible自动化脚本,在客户端192.168.1.121上依次更新apache-tomcat2和apache-tomcat3中的war包。脚本首先停止Tomcat服务,创建备份目录,移动旧war包,复制新war包到相应目录,启动Tomcat服务,并确保每个步骤按顺序执行,避免服务中断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、环境说明

基础环境:

ansible服务端 192.168.1.120


ansible客户端 192.168.1.121


客户端环境:

/home/testuser # ll

drwxr-xr-x 9 root root     4096 Sep  8 17:21 apache-tomcat2

drwxr-xr-x 9 root root     4096 Sep  8 17:21 apache-tomcat3


在apache-tomcatX/webapps下分别是test2.war和test3.war两个包,apache-tomcat2的访问端口是8080


服务端环境:

源码编译安装了ansible


服务端的inventory配置文件/etc/ansible/hosts的配置

[slave]

192.168.1.121 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=XXXX


ansible_ssh_pass是root用户登录客户端192.168.1.121的登录密码


二、更新war包的playbook文件配置

- name: release war to ansible client

  hosts: slave

  remote_user: testuser

  vars:

    war_file: /etc/ansible/test.war

    tomcat2_root: /home/testuser/apache-tomcat2/webapps

    tomcat3_root: /home/testuser/apache-tomcat3/webapps

    newdir: /home/testuser/`date +%Y%m%d`

  tasks:

    - name: stop tomcat

      action: shell ` tomcat2_root `/../bin/catalina.sh stop --force

      tags:

       - tomcat2

    - name: create bakdir

      shell: mkdir ` newdir `

      tags:

       - tomcat2

    - name: move oldwar

      shell: mv ` tomcat2_root `/*.war ` newdir `

      tags:

       - tomcat2

    - name: replice newwar to tomcat2

      copy: src=` war_file ` dest=` tomcat2_root `

      tags:

      - tomcat2

    - name: start tomcat2 service

      action: shell ` tomcat2_root `/../bin/catalina.sh start

      tags:

      - tomcat2

    - name: remove tomcat2 olddir

      shell: rm -rf ` tomcat2_root `/food2/

      tags:

      - tomcat2

    - name: sleep

      shell: sleep 40s

    - name: tomcat status

      shell: curl http://192.168.1.121:8080 &>/dev/null && echo YES || echo NO 

      register: result

      tags:

       - tomcat3

    - name: begin tomcat3

      action: shell ` tomcat3_root `/../bin/catalina.sh stop --force

      when: result.stdout == "YES"

      tags:

       - tomcat3

    - name: move oldwar

      shell: mv ` tomcat3_root `/*.war ` newdir `

      when: result.stdout == "YES"

      tags:

       - tomcat3

    - name: replica newwar to tomcat3

      copy: src=` war_file ` dest=` tomcat3_root `

      when: result.stdout == "YES"

      tags:

       - tomcat3

    - name: start tomcat3 service

      action: shell ` tomcat3_root `/../bin/catalina.sh start

      when: result.stdout == "YES"

      tags:

       - tomcat3

    - name: remove tomcat3 olddir

      shell: rm -rf ` tomcat3_root `/food3/

      when: result.stdout == "YES"

      tags:

       - tomcat3

 


说明:

shell: sleep 40s

shell: curl http://192.168.1.121:8080 &>/dev/null && echo YES || echo NO 

上面的两行是为了确认第一个服务启动完成     


三、执行结果

/ansibletest/ansible-1.7.2/bin # ./ansible-playbook yml/tomcat-admin1.yml 


PLAY [release war to ansible client] ****************************************** 


GATHERING FACTS *************************************************************** 

ok: [192.168.1.121]


TASK: [stop tomcat] *********************************************************** 

changed: [192.168.1.121]


TASK: [create bakdir] ********************************************************* 

changed: [192.168.1.121]


TASK: [move oldwar] *********************************************************** 

changed: [192.168.1.121]


TASK: [replice newwar to tomcat2] ********************************************* 

changed: [192.168.1.121]


TASK: [start tomcat2 service] ************************************************* 

changed: [192.168.1.121]


TASK: [remove tomcat2 olddir] ************************************************* 

changed: [192.168.1.121]


TASK: [sleep] ***************************************************************** 

changed: [192.168.1.121]


TASK: [tomcat status] ********************************************************* 

changed: [192.168.1.121]


TASK: [begin tomcat3] ********************************************************* 

changed: [192.168.1.121]


TASK: [move oldwar] *********************************************************** 

changed: [192.168.1.121]


TASK: [replica newwar to tomcat3] ********************************************* 

changed: [192.168.1.121]


TASK: [start tomcat3 service] ************************************************* 

changed: [192.168.1.121]


TASK: [remove tomcat3 olddir] ************************************************* 

changed: [192.168.1.121]


PLAY RECAP ******************************************************************** 

192.168.1.121             : ok=14   changed=13   unreachable=0    failed=0   

Linux 多tomcat服务 统一安装 统一部署 工具 shell编写 1 引言 基于JAVA开发项目,随着服务的越来越多,配置文件更是眼花缭乱,每次不知道因为配置问题浪费多少时间,更不知道因为配置问题出过多少问题。多台服务器来回切换,如果服务需要依赖,启动更是问题。 1.1 目的 一次修改,统一安装;操作简单,实用高效。 1.2 范围 本项目使用范围包括: * 基于JAVA开发项目 * 项目相关服务繁多 * 服务启动有依赖关系 1.3 读者 本需求规格说明书的阅读者或其他文档干系人有平台总监、产品经理、项目总监、项目经理、开发人员、测试人员、用户体验设计人员等。 2 项目总体描述 2.1 系统总体功能框架 2.2 系统功能列表 Exec 建立信任、初始命令 初始 Tools 提供服务与服务列表 扫描提供服务列表,获取配置信息 Conf 自动获取需要修改配置 自动生成 Bin 执行脚本 提供总执行与单一执行脚本 New 存放修改后配置文件 与bak保留文件成反比 Bak 存放原始配置文件 便于问题分析 Temp 存放临时文件 临时文件将及时删除无任何冗积 Workapp 存放war包 上传war包 3 功能描述 3.1 获取配置文件 通过本系统获取配置文件非常简单,只需用户提供服务列表,其他无需操作。服务列表如下: name ip serve 服务名称 192.168.0.1 /home/tomcat_服务名称 服务名称 192.168.1.2 /home/tomcat_服务名称 服务名称 192.168.1.2 /home/tomcat_服务名称 名词解释: name :服务名称,需与war包名称一致。 ip :服务器ip地址。 serve :Tomcat部署路径。 执行脚本,“.. /unifyDeploy/conf”自动生成用户所需修改配置文件,配置文件是通过筛选后生成,所以一个服务不管需要配置多少文件,这里只生成一个,方便修改与管理。 3.2 自动化统一安装部署 自动化统一安装部署,包括:上传解压war包、同步配置、启动服务、监控服务等。 list.ll one.sh pass.war startup.sh syn.cn two.sh 部署支持统一安装于分布式安装,每个脚本可以拆分开任意组合使用,比如: 1) 一套新环境tomcat中还未部署服务,只需调整上传war包脚本顺序,先上传war后,后续操作正常执行。 2) 迭代更新,功能稍作修改,原配置项无需修改,也只需调整上传war包脚本顺序,先获取原有配置,再上传更新war包,后续操作正常执行。 3.3 优缺点描述 优点描述: * 适用于统一安装部署,也适用于单独服务安装部署。 * 保留原始备份,方便部署前后配置对比。 * 操作简单、需求扩展能力强。 不足描述: * 暂时只适用于基于tomcat服务器项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值