---
- hosts: "{{ hosts }}"
remote_user: root
vars:
filename: "../../../target/*.jar"
tasks:
- name: 在目标服务器上创建目录并给与权限
shell: mkdir {{ projectdir }}{{ projectname }}/ -p;chmod -R 777 {{ projectdir }}{{ projectname }};chmod -R 777 /home/logs
ignore_errors: yes
- name: 清理目录里的备份文件 保留最新
shell: ls -t | sed -n '5,$p' | xargs -I {} rm -rf {}
args:
chdir: "{{ projectdir }}{{ projectname }}/"
ignore_errors: yes
- name: 拷贝jar包到服务器{{ dirname }}
copy:
src: "{{ item }}"
dest: "{{ projectpwd }}"
backup: yes
mode: 755
with_fileglob:
- "{{ filename }}"
register: cpresult
ignore_errors: no
- name: 查找运行的进程
shell: "ps -ef | grep -v grep | grep -w {{ projectpwd }} | awk '{print $2}'"
register: running_processes
- name: 优雅的干掉进程
shell: "kill {{ item }}"
with_items: "{{ running_processes.stdout_lines }}"
ignore_errors: yes
- name: 等等进程干掉了再开始
wait_for:
path: "/proc/{{ item }}/status"
state: absent
with_items: "{{ running_processes.stdout_lines }}"
- name: 启动服务j接入skywalking
shell: source /etc/profile; nohup java -Xmx{{ mem }}m -Xms{{ mem }}m -XX:+UseG1GC -Dspring.profiles.active={{ active }} -Dserver.port={{ mport }} -javaagent:/data/agent/skywalking-agent.jar -Dskywalking.agent.service_name={{ hostsname }}-{{ projectname }}-{{ active }} -Dskywalking.collector.backend_service=172.19.244.238:11800 -jar {{ projectpwd }} >> /dev/null 2>&1 & echo $!
become: yes
become_user: runuser
become_method: sudo
args:
chdir: {{ projectdir }}{{ projectname }}/
register: runresult
when: agent == 'Skywalking'
ignore_errors: yes
- name: 启动服务接入arms
shell: source /etc/profile; nohup java -Xmx{{ mem }}m -Xms{{ mem }}m -XX:+UseG1GC -Dspring.profiles.active={{ active }} -Dserver.port={{ mport }} -javaagent:/root/arms/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar -Darms.licenseKey= -Darms.appName={{ hostsname }}-{{ projectname }}-{{ active }} -jar {{ projectpwd }} >> /dev/null 2>&1 & echo $!
become: yes
become_user: runuser
become_method: sudo
args:
chdir: {{ projectdir }}{{ projectname }}/
register: runresult
when: agent == 'arms'
ignore_errors: yes
- name: 启动服务不接入任何断点追踪
shell: source /etc/profile; nohup java -Xmx{{ mem }}m -Xms{{ mem }}m -XX:+UseG1GC -Dspring.profiles.active={{ active }} -Dserver.port={{ mport }} -jar {{ projectpwd }} >> /dev/null 2>&1 & echo $!
become: yes
become_user: runuser
become_method: sudo
args:
chdir: {{ projectdir }}{{ projectname }}/
register: runresult
when: agent == 'None'
ignore_errors: yes
- name: 启动后检查端口是否监听
wait_for:
port: "{{ mport }}"
delay: 5
timeout: 60
- name: 获取当前端口的进程PID
shell: netstat -anp|grep {{ mport }}|awk '{printf $7}'|cut -d/ -f1
register: portresult
- name: 验证进程是否启动成功
fail:
msg: "启动失败,进程id不匹配,请手动检查该服务器上是否存在端口占用"
when: runresult.stdout != portresult.stdout
ansible-playbook更新发布java程序jar包,并检测服务端口与jar包匹配验证发布
于 2022-07-28 14:52:29 首次发布