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