实战之Ansible前后端部署脚本

首先, 服务已经在线上能跑起来为前提

ansible常用模块参考

前端 boring-front, 后端 boring-server
ll /Users/lingye/MyProjects/gitee/boring-server/boring-profession-system/target/lib |grep boring- |awk '{print $9}'

image.png

实现前提, 参考文章

ansible playbookCentOS7 免密登录指南全网: Springboot 高级瘦身法之MB到KB的转化

各种脚本

reload_nginx.sh
#!/bin/bash
rm -rf /usr/local/nginx/client_body_temp/*
rm -rf /usr/local/nginx/fastcgi_temp/*
rm -rf /usr/local/nginx/proxy_temp/*
rm -rf /usr/local/nginx/uwsgi_temp/*
rm -rf /usr/local/nginx/scgi_temp/*

/usr/local/nginx/sbin/nginx -s reload
run_app.sh
#!/bin/bash
nohup /usr/local/jdk8/bin/java -server -XX:MaxMetaspaceSize=256M -XX:MetaspaceSize=256M -XX:+UseSerialGC -XX:ErrorFile=/odboy/logs/hs_err_pid%p.log  -XX:HeapDumpPath=/odboy/logs -XX:+HeapDumpOnOutOfMemoryError -jar /odboy/apps/boring-profession-system.jar > /odboy/logs/boring-profession-system.log  2>&1 &
stop_app.sh
#!/bin/bash
for i in `ps aux|grep boring-profession-system|grep -v grep|awk '{print $2}'`;do kill -9 $i;done
deploy.sh
#!/bin/bash
project_path=~/MyProjects/gitee/
# 前端
cd ${project_path}boring-front
rm -rf ./dist
npm run build:prod
tar -czvf dist.tar.gz dist
rm -rf ./dist
# 后端
cd ${project_path}boring-server
mvn clean package
# playbook
ansible-playbook ./deploy.yml
# 清理战场
cd ${project_path}boring-front
rm -f ./dist.tar.gz
deploy.yml
---
- hosts: all   # 这里的all是因为我在/etc/ansible/hosts中定义了主机组
  remote_user: root
  vars:
    blocal_path: /Users/lingye/MyProjects/gitee
    bremote_path: /odboy/apps
    bmodule_name: boring-profession-system

  tasks:
    - name: front - push dist.tar.gz as dist
      unarchive: src={{ blocal_path }}/boring-front/dist.tar.gz dest={{ bremote_path }}
    - name: front - remove dist_boring
      command: chdir={{ bremote_path }} rm -rf dist_boring
    - name: front - rename dist
      command: chdir={{ bremote_path }} mv dist dist_boring
    - name: front - reload nginx
      script: ./reload_nginx.sh
    - name: server - stop app
      script: ./stop_app.sh
    - name: server - copy main jar
      copy: src={{ blocal_path }}/boring-server/{{ bmodule_name }}/target/{{ bmodule_name }}.jar dest={{ bremote_path }}
    - name: server - copy dependent jar
      copy: src={{ blocal_path }}/boring-server/{{ bmodule_name }}/target/lib/{{ item }} dest={{ bremote_path }}/lib
      with_items:
        - boring-base-1.0.0.jar
        - boring-boot-dingtalk-1.0.0.jar
        - boring-boot-security-1.0.0.jar
        - boring-core-api-1.0.0.jar
        - boring-core-base-1.0.0.jar
        - boring-core-service-1.0.0.jar
        - boring-gen-api-1.0.0.jar
        - boring-gen-base-1.0.0.jar
        - boring-gen-service-1.0.0.jar
        - boring-log-api-1.0.0.jar
        - boring-log-base-1.0.0.jar
        - boring-log-service-1.0.0.jar
        - boring-mnt-api-1.0.0.jar
        - boring-mnt-base-1.0.0.jar
        - boring-mnt-service-1.0.0.jar
        - boring-profession-config-api-1.0.0.jar
        - boring-profession-config-base-1.0.0.jar
        - boring-profession-config-service-1.0.0.jar
        - boring-profession-finance-api-1.0.0.jar
        - boring-profession-finance-base-1.0.0.jar
        - boring-profession-finance-job-1.0.0.jar
        - boring-profession-finance-service-1.0.0.jar
        - boring-profession-life-api-1.0.0.jar
        - boring-profession-life-base-1.0.0.jar
        - boring-profession-life-job-1.0.0.jar
        - boring-profession-life-service-1.0.0.jar
        - boring-quartz-api-1.0.0.jar
        - boring-quartz-base-1.0.0.jar
        - boring-quartz-service-1.0.0.jar
        - boring-tools-api-1.0.0.jar
        - boring-tools-base-1.0.0.jar
        - boring-tools-service-1.0.0.jar
    - name: server - run app
      script: ./run_app.sh

目录结构

image.png

执行脚本deploy.sh部署, 部署过程结果

PLAY [all] *****************************************************************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************************************************
ok: [aliyun]

TASK [front - push dist.tar.gz as dist] ************************************************************************************************************************************
changed: [aliyun]

TASK [front - remove dist_boring] ******************************************************************************************************************************************
changed: [aliyun]

TASK [front - rename dist] *************************************************************************************************************************************************
changed: [aliyun]

TASK [front - reload nginx] ************************************************************************************************************************************************
changed: [aliyun]

TASK [server - stop app] ***************************************************************************************************************************************************
changed: [aliyun]

TASK [server - copy main jar] **********************************************************************************************************************************************
ok: [aliyun]

TASK [server - copy dependent jar] *****************************************************************************************************************************************
ok: [aliyun] => (item=boring-base-1.0.0.jar)
ok: [aliyun] => (item=boring-boot-dingtalk-1.0.0.jar)
ok: [aliyun] => (item=boring-boot-security-1.0.0.jar)
ok: [aliyun] => (item=boring-core-api-1.0.0.jar)
ok: [aliyun] => (item=boring-core-base-1.0.0.jar)
ok: [aliyun] => (item=boring-core-service-1.0.0.jar)
ok: [aliyun] => (item=boring-gen-api-1.0.0.jar)
ok: [aliyun] => (item=boring-gen-base-1.0.0.jar)
ok: [aliyun] => (item=boring-gen-service-1.0.0.jar)
ok: [aliyun] => (item=boring-log-api-1.0.0.jar)
ok: [aliyun] => (item=boring-log-base-1.0.0.jar)
ok: [aliyun] => (item=boring-log-service-1.0.0.jar)
ok: [aliyun] => (item=boring-mnt-api-1.0.0.jar)
ok: [aliyun] => (item=boring-mnt-base-1.0.0.jar)
ok: [aliyun] => (item=boring-mnt-service-1.0.0.jar)
ok: [aliyun] => (item=boring-profession-config-api-1.0.0.jar)
ok: [aliyun] => (item=boring-profession-config-base-1.0.0.jar)
ok: [aliyun] => (item=boring-profession-config-service-1.0.0.jar)
ok: [aliyun] => (item=boring-profession-finance-api-1.0.0.jar)
ok: [aliyun] => (item=boring-profession-finance-base-1.0.0.jar)
ok: [aliyun] => (item=boring-profession-finance-job-1.0.0.jar)
ok: [aliyun] => (item=boring-profession-finance-service-1.0.0.jar)
ok: [aliyun] => (item=boring-profession-life-api-1.0.0.jar)
ok: [aliyun] => (item=boring-profession-life-base-1.0.0.jar)
ok: [aliyun] => (item=boring-profession-life-job-1.0.0.jar)
ok: [aliyun] => (item=boring-profession-life-service-1.0.0.jar)
ok: [aliyun] => (item=boring-quartz-api-1.0.0.jar)
ok: [aliyun] => (item=boring-quartz-base-1.0.0.jar)
ok: [aliyun] => (item=boring-quartz-service-1.0.0.jar)
ok: [aliyun] => (item=boring-tools-api-1.0.0.jar)
ok: [aliyun] => (item=boring-tools-base-1.0.0.jar)
ok: [aliyun] => (item=boring-tools-service-1.0.0.jar)

TASK [server - run app] ****************************************************************************************************************************************************
changed: [aliyun]

PLAY RECAP *****************************************************************************************************************************************************************
aliyun                     : ok=9    changed=6    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌 烨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值