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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
其实大部分是参考别人的博文做的,自己做了修改
准备
tomcat.
tar
.gz 经过优化后的
参考 http:
//vekergu
.blog.51cto.com
/9966832/1672931
进行优化
apr模式开启
tomcat都使用root默认目录
文件
tomcat.sh
server.xml
建立一些目录,并赋予权限
/opt/src/logs
启动
sh
/opt/ea/tomcat
.sh
cat
tomcat.sh
#!/bin/bash
JAVA_OPTS=
"-Xms2048m -Xmx2048m -Xmn384m"
Java_Home=
/usr/java/jdk
Tomcat_Home=
/opt/ea/tomcat
Tomcat_User=tomcat
chown
$Tomcat_User:$Tomcat_User -R
/opt/ea/tomcat
chown
$Tomcat_User:$Tomcat_User -R
/opt/src/logs
JAVA_HOME=`
echo
$Java_Home`
CATALINA_HOME=`
echo
$Tomcat_Home`
CATALINA_BASE=`
echo
$New_instance`
export
JAVA_HOME JAVA_OPTS CATALINA_HOME CATALINA_BASE
su
`
echo
$Tomcat_User` $CATALINA_HOME
/bin/startup
.sh
客户端
/etc/profile
新增
export
JAVA_HOME=
/usr/java/jdk
export
JRE_HOME=
/usr/java/jdk/jre
exportCLASSPATH=.:$JAVA_HOME
/lib/dt
.jar:$JAVA_HOME
/lib/tools
.jar:$JRE_HOME
/lib
export
PATH=$JAVA_HOME
/bin
:$PATH
export
MAVEN_HOME=
/usr/java/apache-maven-3
.3.1
开始吧
mkdir
-p playbook
以下是playbook例子结构,具体参考http:
//lansgg
.blog.51cto.com
/5675165/1749179
参考ansible部署tomcat及 include机制 写的非常详细。
├── hosts
├── roles
│ └── http
│ ├── default
│ ├── files
│ │ ├── apache-tomcat-8.0.33.
tar
.gz
│ │ ├── jdk-8u65-linux-x64.
tar
.gz
│ │ └── ROOT
│ │ └──
test
.html
│ ├── handlers
│ │ └── main.yml
│ ├── meta
│ │ └──
test
│ │ └──
test
.html
│ ├── tasks
│ │ ├── bak.yml
│ │ └── main.yml
│ ├── templates
│ │ └──
test
.yml
│ └── vars
└── site.yml
cd
/etc/anisble/playbook
mkdir
-pv roles
/http/
{tasks,handlers,files,vars,templates,meta,default}
touch
site.yml
mkdir
-p roles
/http/files/ROOT
touch
roles
/http/files/ROOT/test
.html
echo
"xx"
>>.
/roles/http/files/ROOT/test
.html
mkdir
-p
/etc/ansible/playbook/roles/http/meta/test
echo
"xx"
>
/etc/ansible/playbook/roles/http/meta/test/test
.html
vim roles
/http/tasks/main
.yml
- name: copy jdk
copy: src=
/opt/src/jdk
.
tar
.gz dest=
/usr/java/
- name:
tar
shell: chdir=
/usr/java
tar
xvzf jdk.
tar
.gz
- name:
rm
file
: dest=
/usr/java/jdk
.
tar
.gz state=absent
- name: copy maven
copy: src=
/opt/src/mvn
.
tar
.gz dest=
/usr/java/
- name:
tar
shell: chdir=
/usr/java
tar
xvzf mvn.
tar
.gz
- name:
rm
file
: dest=
/usr/java/mvn
.
tar
.gz state=absent
- name: copy tomcat
copy: src=
/opt/src/tomcat
.
tar
.gz dest=
/opt/ea/
- name:
tar
shell: chdir=
/opt/ea
tar
xvzf tomcat.
tar
.gz
- name:
rm
file
: dest=
/opt/ea/tomcat
.
tar
.gz state=absent
- name: copy apr
copy: src=
/opt/src/apr
.
tar
.gz dest=
/usr/local
- name:
tar
shell: chdir=
/usr/local
tar
xvzf apr.
tar
.gz
- name:
rm
file
: dest=
/usr/local/apr
.
tar
.gz state=absent
- name: copy tomcat.sh
copy: src=
/opt/src/tomcat
.sh dest=
/opt/ea/tomcat
.sh
- name: add user
action: user name=tomcat password=faJxjj
/6hKXPs
update_password=always shell=
/bin/bash
home=
/opt/ea
- name: Modify
file
: path=
/opt/ea/tomcat/
owner=tomcat group=tomcat mode=0755
- name: 首次启动tomcat
shell: chdir=
/opt/ea
nohup
sh tomcat.sh &
- name: copy
test
copy: src=
/etc/ansible/playbook/roles/http/meta/test
dest=
/opt/ea/tomcat/webapps/
tags:
- updateconf
notify:
- stop tomcat service
- start tomcat service
vim roles
/http/handlers/main
.yml
- name: stop tomcat service
shell:
"ps -ef |grep /opt/ea/tomcat |grep -v grep |awk '{print $2}' |xargs kill -9"
- name: start tomcat service
shell: chdir=
/opt/ea
nohup
sh tomcat.sh &
vim site.yml
- hosts: web
remote_user: root
roles:
- http
ansible-playbook -i hosts site.yml
报错
1.server.xml要改
2.-DappHome=
/opt/src/xx/db
cat
setenv.sh
JAVA_OPTS=
"$JAVA_OPTS -DappHome=/opt/src/xx/db"
3.start启动时启动不了的,因为没有环境变量,所以只能用脚本
4.var 变量例子参考
Listen `listen`.`0`:`listen`.`1`
listen:
-
"`ansible_all_ipv4_addresses`.`0`"
- 8080
host_fqdn:
-
"`ansible_nodename`"
5.测试
echo
"abcdefg"
>> roles
/http/meta/test/test
.html
ansible-playbook -i hosts site.yml --tags=updateconf
http:
//ip
:8080
/test/test
.html
|
第二版
能用,写的太差
更新点
把项目和tomcat启动程序分开
加点变量
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
|
1.cat
roles
/
http
/
tasks
/
main.yml
-
name: pro
file
: path
=
/
opt
/
apps
/
`pro_dir` state
=
directory
-
name: add user
action: user name
=
tomcat password
=
xx update_password
=
always shell
=
/
bin
/
bash home
=
/
opt
/
ea
-
name: chpasswd
shell: echo
"xx"
|passwd
-
-
stdin tomcat
-
name: copy profile
copy: src
=
/
opt
/
src
/
profile dest
=
/
etc
/
profile force
=
yes owner
=
root group
=
root mode
=
0644
-
name: copy ssl
copy: src
=
/
opt
/
src
/
ssl.tar.gz dest
=
/
usr
/
local
/
force
=
yes owner
=
tomcat group
=
tomcat
-
name: tar
shell: chdir
=
/
usr
/
local tar xvzf ssl.tar.gz
-
name: rm
file
: dest
=
/
usr
/
local
/
ssl.tar.gz state
=
absent
-
name: copy jdk
copy: src
=
/
opt
/
src
/
jdk.tar.gz dest
=
/
usr
/
java
/
-
name: tar
shell: chdir
=
/
usr
/
java tar xvzf jdk.tar.gz
-
name: rm
file
: dest
=
/
usr
/
java
/
jdk.tar.gz state
=
absent
-
name: copy maven
copy: src
=
/
opt
/
src
/
mvn.tar.gz dest
=
/
usr
/
java
/
-
name: tar
shell: chdir
=
/
usr
/
java tar xvzf mvn.tar.gz
-
name: rm
file
: dest
=
/
usr
/
java
/
mvn.tar.gz state
=
absent
-
name: copy tomcat
copy: src
=
/
opt
/
src
/
tomcat.tar.gz dest
=
/
opt
/
ea
/
-
name: tar
shell: chdir
=
/
opt
/
ea tar xvzf tomcat.tar.gz && rm
-
rf `tomcat_dir` && mv tomcat `tomcat_dir`
-
name: rm
file
: dest
=
/
opt
/
ea
/
tomcat.tar.gz state
=
absent
-
name: copy server.xml
template: src
=
server.xml dest
=
/
opt
/
ea
/
`tomcat_dir`
/
conf
/
force
=
yes mode
=
0644
-
name: rm webapps
file
: dest
=
/
opt
/
ea
/
`tomcat_dir`
/
webapps
/
state
=
absent
-
name: copy apr
copy: src
=
/
opt
/
src
/
apr.tar.gz dest
=
/
usr
/
local
-
name: tar
shell: chdir
=
/
usr
/
local tar xvzf apr.tar.gz
-
name: rm
file
: dest
=
/
usr
/
local
/
apr.tar.gz state
=
absent
-
name: copy tomcat.sh
copy: src
=
/
opt
/
src
/
tomcat.sh dest
=
/
opt
/
ea
/
tomcat.sh
-
name: modify tomcat.sh
shell: chdir
=
/
opt
/
ea sed
-
i
's%/ea/tomcat%/ea/`tomcat_dir`%g'
tomcat.sh
-
name: modify
file
: path
=
/
opt
/
ea
/
`tomcat_dir`
/
owner
=
tomcat group
=
tomcat mode
=
0755
-
name: 首次启动tomcat
shell: chdir
=
/
opt
/
ea source
/
etc
/
profile && nohup sh tomcat.sh &
-
name: copy test
copy: src
=
/
etc
/
ansible
/
playbook
/
roles
/
http
/
meta
/
test dest
=
/
opt
/
apps
/
`pro_dir`
/
tags:
-
updateconf
notify:
-
stop tomcat service
-
start tomcat service
2.server
.xml
<Context path
=
"
" docBase="
/
opt
/
apps
/
`pro_dir`
/
" reloadable="
false"
/
>
3.
-
name: stop tomcat service
shell:
"ps -ef |grep /opt/install/`tomcat_dir` |grep -v grep |awk '{print $2}' |xargs kill -9"
-
name: start tomcat service
shell: chdir
=
/
opt
/
install nohup sh tomcat.sh &
4.
执行yml
ansible
-
playbook
-
i hosts site.yml
-
-
extra
-
vars
"tomcat_dir=test pro_dir=test"
tomcat_dir tomcat启动程序名字
pro_dir 项目名字
5.wget
http:
/
/
xx:
8080
/
test
/
test.html 测试
|
本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/1782082,如需转载请自行联系原作者