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