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 测试
|