-
Notifications
You must be signed in to change notification settings - Fork 8
/
deploy.yml
143 lines (140 loc) · 5.73 KB
/
deploy.yml
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
---
- name: install dependencies
hosts: nxts
tasks:
- name: install unzip on Debian-based
apt: pkg={{ item }} update_cache=yes state=latest
with_items:
- "unzip"
- "python-apt"
- "debconf-utils"
- "htop"
- "nano"
when: ansible_os_family == "Debian"
sudo: yes
- name: Install WebUpd8 apt key on Debian
apt_key: id=EEA14886 keyserver='keyserver.ubuntu.com' state=present
when: ansible_distribution == "Debian"
sudo: yes
- name: Install WebUpd8 Team Java PPA (for Oracle Java) on Debian
apt_repository: repo='deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main' state=present update_cache=yes
when: ansible_distribution == "Debian"
sudo: yes
- name: Install WebUpd8 Team Java PPA (for Oracle Java) on Ubuntu
apt_repository: repo=ppa:webupd8team/java state=present update_cache=yes
when: ansible_distribution == "Ubuntu"
sudo: yes
- name: Accept Oracle license
debconf: name='oracle-java8-installer' question='shared/accepted-oracle-license-v1-1' value='true' vtype='select'
when: ansible_os_family == "Debian"
sudo: yes
- name: install JRE on Debian-based
apt: pkg={{ item }} state=latest
with_items:
- "oracle-java8-installer"
- "oracle-java8-set-default"
when: ansible_os_family == "Debian"
sudo: yes
- name: install packages on RedHat-based
yum: name={{ item }} update_cache=yes state=latest
with_items:
- "openjdk-8-jre"
- "unzip"
when: ansible_os_family == "RedHat"
sudo: yes
- name: update nxt
hosts: nxts
gather_facts: no
vars:
nxt_local_folder: ~/nxt-kit
nxt_remote_folder: ~/nxt-kit-deployed
nxt_conf_name: "conf"
nxt_is_stable_flag: "is-stable"
hallmark_date: "2013-12-11"
hallmark_weight: 100
kit_ServerHost: "0.0.0.0"
vars_prompt:
- name: "secret_phrase"
prompt: "secret phrase for hallmarking [if empty hallmark is taken from `hallmark_predef` host variable]"
default: ""
private: yes
tasks:
- name: uncron check script
cron: name="is nxt-{{ nxt_conf_name }} running" state=absent
- name: kill check script
shell: pkill -f 'check-nxt-{{ nxt_conf_name }}.sh'
ignore_errors: yes
- name: check remote folders
file: path={{ item }} state=directory owner={{ ansible_ssh_user }} mode=0744
with_items:
- "{{ nxt_remote_folder }}"
- "{{ nxt_remote_folder }}/distrib"
- "{{ nxt_remote_folder }}/sbin"
- name: remove cached chain
file: path="{{ nxt_remote_folder }}/distrib/chain-cached-{{ nxt_conf_name }}.tar.gz" state=absent
- name: calculate local md5
local_action: shell /usr/bin/md5sum {{ nxt_local_folder }}/distrib/{{ item }} | awk '{print $1;}'
with_items:
- "chain-original-{{ nxt_conf_name }}.tar.gz"
- "nxt.zip"
run_once: true
changed_when: false
register: localmd5
- name: calculate remote md5
shell: /usr/bin/md5sum {{ nxt_remote_folder }}/distrib/{{ item }} | awk '{print $1;}'
with_items:
- "chain-original-{{ nxt_conf_name }}.tar.gz"
- "nxt.zip"
changed_when: false
register: remotemd5
- name: delete original chain
file: path="{{ nxt_remote_folder }}/distrib/chain-original-{{ nxt_conf_name }}.tar.gz" state=absent
when: localmd5.results[0].stdout == ""
- name: copy original chain
copy: src={{ nxt_local_folder }}/distrib/chain-original-{{ nxt_conf_name }}.tar.gz dest={{ nxt_remote_folder }}/distrib
when: localmd5.results[0].stdout != remotemd5.results[0].stdout and localmd5.results[0].stdout != ""
- name: previous installation was successful
stat: path="{{ nxt_remote_folder ~ '/' ~ nxt_is_stable_flag }}"
register: p
- name: remote runs different version
shell: /bin/true
when: localmd5.results[1].stdout != remotemd5.results[1].stdout or not p.stat.exists
notify:
- mark installation unstable
- generate hallmark
- kill and wait nxt
- copy lastest distrib
- unpack new version
- setup properties
- mark installation stable
handlers:
- name: mark installation unstable
file: path="{{ nxt_remote_folder ~ '/' ~ nxt_is_stable_flag }}" state=absent
- name: generate hallmark
local_action: command wget -qO- "http://127.0.0.1:7876/nxt" --post-data="requestType=markHost&secretPhrase={{ secret_phrase|urlencode }}&host={{ inventory_hostname }}&weight={{ hallmark_weight }}&date={{ hallmark_date }}"
register: hallmark_result
when: secret_phrase != ""
- name: kill and wait nxt
shell: pkill -SIGKILL -f 'java -cp classes:lib/\*:{{ nxt_conf_name }} ' && while pgrep -f 'java -cp classes:lib/\*:{{ nxt_conf_name }} ' > /dev/null; do sleep 1; done
ignore_errors: yes
- name: copy lastest distrib
copy: src={{ nxt_local_folder }}/distrib/nxt.zip dest={{ nxt_remote_folder }}/distrib
when: localmd5.results[1].stdout != remotemd5.results[1].stdout
- name: unpack new version
shell: cd {{ nxt_remote_folder }} && rm -rf nxt && unzip -q distrib/nxt.zip
- name: setup properties
template: src={{ nxt_local_folder }}/templates/nxt.properties.j2 dest={{ nxt_remote_folder }}/nxt/{{ nxt_conf_name }}/nxt.properties
- name: mark installation stable
shell: "echo `date` > {{ nxt_remote_folder ~ '/' ~ nxt_is_stable_flag }}"
- name: ensure check script @ cron
hosts: nxts
gather_facts: no
vars:
nxt_local_folder: ~/nxt-kit
nxt_remote_folder: ~/nxt-kit-deployed
nxt_conf_name: "conf"
tasks:
- name: copy check script
template: src={{ nxt_local_folder }}/scripts-src/check.sh dest={{ nxt_remote_folder }}/sbin/check-nxt-{{ nxt_conf_name }}.sh mode=0744
- name: cron check script
cron: name="is nxt-{{ nxt_conf_name }} running" job="{{ nxt_remote_folder }}/sbin/check-nxt-{{ nxt_conf_name }}.sh" minute="*/3"