记录下用ansible对java项目的发包,此处项目是springboot,只需要简单的java -jar xxxx.jar即可运行

看一下对接到jenkins中的大致playbook

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
---
- hosts: all
vars:
project_name: ""
deploy_dir: "/usr/local/src"
jar_path: ""
jar_name_prefix: ""
jar_name: ""
tasks:
- name: get pid
shell: ps -ef grep -v grep grep {{ jar_name_prefix }} awk '{print $2}'
register: running_processes
- name: kill running processes
shell: kill {{ item }}
with_items: "{{ running_processes.stdout_lines }}"
- wait_for:
path: "/proc/{{ item }}/status"
state: absent
timeout: 60
with_items: "{{ running_processes.stdout_lines }}"
ignore_errors: yes
register: killed_processes
- name: force kill stuck processes
shell: "kill -9 {{ item }}"
with_items: "{{ killed_processes.results select('failed') map(attribute='item') list }}"
- name: upload
copy:
src: "gs-spring-boot-0.1.0.jar"
dest: "{{ deploy_dir }}/"
- name: start
shell: "cd {{ deploy_dir }} && nohup java -jar {{ jar_name }} --server.port=8081 >/dev/null 2>&1 &"

对应的运行命令

1
cd deploy && ansible-playbook -i hosts task.yaml -e "project_name=${project_name}" "jar_path=${jar_path}" "jar_name=${jar_name}"

对应的输出类似如下

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

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

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

TASK [get pid] ***************************************************************************************************************************************
changed: [192.168.44.140]

TASK [kill running processes] ************************************************************************************************************************
changed: [192.168.44.140] => (item=3362)

TASK [wait_for] **************************************************************************************************************************************
ok: [192.168.44.140] => (item=3362)

TASK [force kill stuck processes] ********************************************************************************************************************

TASK [upload] ****************************************************************************************************************************************
ok: [192.168.44.140]

TASK [start] *****************************************************************************************************************************************
changed: [192.168.44.140]

PLAY RECAP *******************************************************************************************************************************************
192.168.44.140 : ok=6 changed=3 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0