设为首页 收藏本站
查看: 1004|回复: 0

[经验分享] 利用ansible-playbook从测试环境获取tomcat中java项目新版本发布到生产环境

[复制链接]

尚未签到

发表于 2018-7-29 14:14:21 | 显示全部楼层 |阅读模式
#生产环境主机的ip,这里也可以是/etc/ansible/hosts定义的组名  
- hosts: 192.168.13.51
  
#变量,在yml文件中使用变量可以使整个文件可以用在不同的主机上升级,变量的使用方法是,如果task中的变量在冒号后则一定要将冒号后整句加上双引号"",因为yml文件自动把冒号后的大括号的内容识别为列表,如shell:"/bin/startup.sh"
  
  vars:
  
#测试环境IP地址
  
    testIP: 192.168.13.49
  
#测试环境中项目的位置
  
    testhome: /home/app/api-tomcat/webapps
  
#测试环境中项目war包的名字
  
    warname: api.war
  
#生产环境中项目的tomcat所在的位置
  
    oldhome: /home/app/api-tomcat
  
#生产环境中老版本项目所在webapps备份目录的位置
  
    backupwebapps: /home/app/tomcat.bak
  
#从测试环境获取的新版本war包所在的位置
  
    newwar: /home/app/newwar
  
#新版本war包解压后目录的名字
  
    zipname: api
  
#整个远程自动化操作中所使用的账户,这里整个从生产环境到测试环境的操作都是用app用户执行的
  
  remote_user: app
  
#具体操作
  
  tasks:
  
    - name: 生产环境删除/home/app/newwar目录,若目录不存在则忽略错误(删这个目录的原因是因为之后要新建这个目录,确保整个yml文件可以多次执行,ignore_errors为是否忽略错误返回值)
  
      file: path= state=absent
  
      ignore_errors: yes
  
    - name: 生产环境创建/home/app/newwar目录,改权限,(其中recurse是递归创建目录,state是文件类型为目录)
  
      file: path= recurse=yes mode=775 owner=app group=app state=directory
  
    - name: 从测试环境192.168.13.49复制新版本/home/app/api-tomcat/webapps/api.war包到生产环境192.168.13.51的/home/app/newwar目录下,此处之后的操作都是在生产环境下
  
      shell: scp app@:/
  
    - name: 给/home/app/newwar递归改权限(因为整改操作都是以app用户身份执行的,所以一定要保证权限为app的权限)
  
      file: dest= recurse=yes mode=775 owner=app group=app
  
    - name: 解压/home/app/newwar/api.war包在/home/app/newwar/api目录
  
      shell: unzip -oq / -d /
  
    - name: 再次给/home/app/newwar递归改权限(确保新版本为app的权限)
  
      file: dest= recurse=yes mode=775 owner=app group=app
  
    - name: 创建用来备份老版本webapps的目录/home/app/tomcat.bak/api并改递归权限
  
      file: path=/ recurse=yes mode=775 owner=app group=app state=directory
  
    - name: 备份/home/app/api-tomcat/webapps到目录/home/app/tomcat.bak/api/webapps-时间戳(这个备份目录是用来回滚的)
  
      shell: cp -a /webapps //webapps-`date +%Y%m%d%H%M`
  
    - name: kill进程方式停止服务.忽略错误返回值(用这种方式才能确保老版本停止运行,否则会出现冲突)
  
      shell: ps -ef | grep  | grep -v grep | xargs kill
  
      ignore_errors: yes
  
    - name: kill进程方式停止服务.忽略错误返回值(再次确保老版本不再运行)
  
      shell: ps -ef | grep  | grep -v grep | xargs kill
  
      ignore_errors: yes
  
    - name: 再次kill进程方式停止服务.忽略错误返回值
  
      shell: ps -ef | grep  | grep -v grep | xargs kill
  
      ignore_errors: yes
  
    - name: 查看停止服务的结果,进程是否还在
  
      shell: ps -ef | grep
  
    - name: 删除老版本的/home/app/api-tomcat/webapps/api.war包
  
      file: path=/webapps/ state=absent
  
      ignore_errors: yes
  
    - name: 删除老版本的/home/app/api-tomcat/webapps/api程序目录
  
      file: path=/webapps/ state=absent
  
      ignore_errors: yes
  
    - name: 复制新版本目录/home/app/newwar/api到/home/app/api-tomcat/webapps目录下
  
      shell: cp -a / /webapps/
  
    - name: 复制新版本war包/home/app/newwar/api.war包到/home/app/api-tomcat/webapps目录下
  
      shell: cp -a / /webapps/
  
    - name: 启动服务/home/app/api-tomcat/bin/startup.sh(source是为了载入jdk的环境变量,nohup是为了保证yml跑完了进程依然不退出)
  
      shell: "source /etc/profile;nohup /bin/startup.sh &"
  
    - name: 查看进程中是否存在启动的服务
  
      shell: ps -ef | grep

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-543149-1-1.html 上篇帖子: rhel7 ansible 自动化部署示例 下篇帖子: Ansible(二)-rhel7下yum自动安装配置及使用ansible2.2
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表