ansible批量安装tomcat

实验总共三台机器 一台做为控制台 另外两台作为web使用

该项目的目录结构如下:

[root@TrackerServer servers]# tree 
.
├── ansible.cfg -> ./conf/ansible.cfg
├── conf
│   ├── ansible.cfg
│   └── hosts
├── group_vars
│   └── all-servers
├── pkg.yml
├── roles
│   ├── centos
│   │   ├── files
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── tasks
│   │   │   ├── main.yml
│   │   │   ├── service.yml
│   │   │   └── tools.yml
│   │   └── templates
│   │       ├── iptables-save
│   │       └── sshd_config
│   └── tomcat
│       ├── files
│       │   ├── apache-tomcat-7.0.63.tar.gz
│       │   ├── install_native.sh
│       │   ├── jdk-7u79-linux-x64.rpm
│       │   ├── profile
│       │   ├── tomcat
│       │   └── tomcat-native-1.1.33-src.tar.gz
│       ├── handlers
│       │   └── main.yml
│       ├── tasks
│       │   ├── main.yml
│       │   ├── tomcat-set.yml
│       │   └── tomcat.yml
│       └── templates
│           ├── catalina.sh
│           ├── iptables-save
│           ├── server.xml
│           └── tomcat-users.xml
├── ssh_keys
│   ├── id_rsa
│   └── id_rsa.pub
└── website.yml

pkg.yml用来安装centos系统所需要的工具以及库内容如下:

[root@TrackerServer servers]# cat pkg.yml 
---
- hosts: test-servers
  gather_facts: False
  remote_user: root
  roles:
    - centos

website.yml用来批量安装tomcat的,内容如下:

[root@TrackerServer servers]# cat website.yml 
---
- hosts: test-servers
  gather_facts: False
  remote_user: root
  roles:
    - tomcat

我建立两个角色 一个用来更新centos的库以及相关的工具,一个用来安装tomcat

先来看更新centos的安装包,配置如下

[root@TrackerServer servers]# cat roles/centos/tasks/main.yml 
---
- include: service.yml
- include: tools.yml
[root@TrackerServer servers]# cat roles/centos/tasks/tools.yml 
---
- name: install environ
  tags: tools
  yum: name={{item}} state=latest
  with_items:
    - apr-devel
    - openssl-devel
    - make
    - gcc
    - gcc-c++
    - tree
    - autoconf
    - automake
    - zlib-devel
    - python
    - perl
    - glibc
    - unzip
    - gzip
    - crontabs

然后执行安装或者更新的指令:

[root@TrackerServer servers]# ansible-playbook pkg.yml --tags "tools"
PLAY [test-servers] *********************************************************** 
TASK: [centos | install environ] ********************************************** 
ok: [test-server2] => (item=apr-devel,openssl-devel,make,gcc,gcc-c++,tree,autoconf,automake,zlib-devel,python,perl,glibc,unzip,gzip,crontabs)
ok: [test-server1] => (item=apr-devel,openssl-devel,make,gcc,gcc-c++,tree,autoconf,automake,zlib-devel,python,perl,glibc,unzip,gzip,crontabs)
PLAY RECAP ******************************************************************** 
test-server1               : ok=1    changed=0    unreachable=0    failed=0   
test-server2               : ok=1    changed=0    unreachable=0    failed=0

这就完了,也可通过ansible命令来进行操作 非常简单


再来看omcat 安装 管理等相关的配置

[root@TrackerServer servers]# ll  roles/tomcat/files/
total 143884
-rw-r--r-- 1 root root   8850470 Feb 24 09:28 apache-tomcat-7.0.63.tar.gz
-rwxr-xr-x 1 root root       218 Feb 24 15:42 install_native.sh
-rw-r--r-- 1 root root 138082565 Feb 24 09:27 jdk-7u79-linux-x64.rpm
-rw-r--r-- 1 root root      1910 Feb 24 15:42 profile
-rwxr-xr-x 1 root root      1389 Feb 24 16:00 tomcat
-rw-r--r-- 1 root root    388787 Feb 24 09:27 tomcat-native-1.1.33-src.tar.gz

这是我要安装tomcat所需要的源码包,安装tomcat-native脚本 tomcat的启动脚本,以及系统环境配置文件等


1,install_native.sh 是用来安装tomcat-native的内容如下:

[root@TrackerServer servers]# cat roles/tomcat/files/install_native.sh 
#!/bin/bash
make distclean
./configure --with-apr=/usr/bin/apr-1-config \
            --with-java-home=/usr/java/jdk1.7.0_79 \
            --with-ssl=yes \
            --prefix=/usr/local/tomcat
make && make install
[root@TrackerServer servers]#

2,tomcat是启动脚本 内容如下:

#!/bin/bash
#
# chkconfig: 345 99 28
# description: Starts/Stops Apache Tomcat
export CATALINA_HOME=/usr/local/tomcat
export CATALINA_BASE=/usr/local/tomcat
TOMCAT_USAGE="Usage: $0 {\e[00;32mstart\e[00m|\e[00;31mstop\e[00m|\e[00;32mstatus\e[00m|\e[00;31mrestart\e[00m}"
tomcat_pid() {
        echo `ps -fe | grep $CATALINA_BASE | grep -v grep | tr -s " "|cut -d" " -f2`
}
start() {
  pid=$(tomcat_pid)
  if [ -n "$pid" ];then
    echo -e "\e[00;31mTomcat is already running (pid: $pid)\e[00m"
  else
    echo -e "\e[00;32mStarting tomcat\e[00m"
    sh $CATALINA_HOME/bin/startup.sh
    status
  fi
  return 0
}   
status(){
          pid=$(tomcat_pid)
          if [ -n "$pid" ]; then echo -e "\e[00;32mTomcat is running with pid: $pid\e[00m"
          else echo -e "\e[00;31mTomcat is not running\e[00m"
          fi
} 
stop() {
  pid=$(tomcat_pid)
  if [ -n "$pid" ];then
    echo -e "\e[00;31mStoping Tomcat\e[00m"
    sh $CATALINA_HOME/bin/shutdown.sh
  else
    echo -e "\e[00;31mTomcat is not running\e[00m"
  fi
 
  return 0
}
case $1 in
 
        start)
          start
        ;;
       
        stop)  
          stop
        ;;
       
        restart)
          stop
          sleep 5s
          start
        ;;
       
        status)
                status
               
        ;;
       
        *)
                echo -e $TOMCAT_USAGE
        ;;
esac    
exit 0

3,profile(路径/etc/profile)是用来设置native生成后的库路径 (去tomcat官网看吧)


然后看下任务目录中的配置:

1,安装jdk tomcat 以及tomcat-native的配置都存储在该文件里

[root@TrackerServer servers]# cat roles/tomcat/tasks/main.yml 

---

- include: tomcat.yml

- include: tomcat-set.yml

[root@TrackerServer servers]# cat roles/tomcat/tasks/tomcat.yml 

---

- name: upload jdk1.7

  copy: src=jdk-7u79-linux-x64.rpm dest={{dest_dir}} owner=root group=root mode=644

  tags: tomcat


- name: be sure jdk1.7 installed

  yum: pkg=/usr/local/src/jdk-7u79-linux-x64.rpm state=installed

  tags: tomcat


- name: upload or sync tomcat-native

  copy: src=tomcat-native-1.1.33-src.tar.gz dest={{dest_dir}}

  tags: tomcat


- name: upload or sync tomcat1.7

  copy: src=apache-tomcat-7.0.63.tar.gz dest={{dest_dir}}

  tags: tomcat


- name: Extract tomcat1.7 

  shell: chdir={{dest_dir}}  tar zxvf apache-tomcat-7.0.63.tar.gz -C /usr/local 

  tags: tomcat


- name: Extract tomcat-native

  command: chdir={{dest_dir}}  tar zxvf tomcat-native-1.1.33-src.tar.gz

  tags: tomcat


- name: install directory

  shell: chdir=/usr/local rm -rf tomcat && mv apache-tomcat-7.0.63 tomcat

  tags: tomcat


- name: install tomcat-native scripts

  copy: src=install_native.sh dest={{dest_dir}}/tomcat-native-1.1.33-src/jni/native mode=655

  tags: tomcat


- name: install tomcat-natvie

  shell: chdir={{dest_dir}}/tomcat-native-1.1.33-src/jni/native  ./install_native.sh >> /dev/null

  tags: tomcat


- name: isntall tomcat started script

  copy: src=tomcat dest=/etc/init.d/ mode=0755

  tags: tomcat


- name: add tomcat script to service

  service: name=tomcat enabled=yes

  tags: tomcat


2,tomcat的设置配置等都在改文件里如下:

[root@TrackerServer servers]# cat roles/tomcat/tasks/tomcat-set.yml 

---

- name: config path environ

  copy: src=profile dest=/etc/ mode=0644

  tags: setpath


- name: command profile

  shell: sh /etc/profile

  tags: setpath


- name: config tomcat start scripts

  copy: src=tomcat dest=/etc/init.d/ mode=0755

  notify: restart tomcat

  tags: tomcat-conf


- name: config tomcat started srcirpt environ

  template: src=catalina.sh dest=/usr/local/tomcat/bin/

  notify: restart tomcat

  tags: tomcat-conf


- name: config tomcat server.xml

  template: src=server.xml dest=/usr/local/tomcat/conf/

  notify: restart tomcat

  tags: tomcat-conf


- name: config tomcat-user.xml

  template: src=tomcat-users.xml dest=/usr/local/tomcat/conf

  notify: restart tomcat

  tags: tomcat-conf


- name: wait for tomcat to start

  wait_for: port={{http_port}} delay=15

  tags: tomcat-conf


3,模板文件内容如下:

[root@TrackerServer servers]# ll roles/tomcat/templates/
total 36
-rwxr-xr-x 1 root root 20933 Feb 24 13:55 catalina.sh
-rw-r--r-- 1 root root     0 Feb 19 09:04 iptables-save
-rw-r--r-- 1 root root  6556 Feb 24 16:02 server.xml
-rw-r--r-- 1 root root  1384 Feb 24 14:16 tomcat-users.xml

4,通报的任务如下:

[root@TrackerServer servers]# cat roles/tomcat/handlers/main.yml 
---
- name: restart tomcat 
  service: name=tomcat sleep=6  state=restarted


全局变量在group_vars中设定

[root@TrackerServer servers]# cat group_vars/all-servers 
#配置service.xml
http_port: 80
https_port: 443
#配置启动脚本参数
java_opts: '"-server -Xms1024m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m"'
#配置tomcat-user.xml
admin_username: root
admin_password: root12300.
#配置sshd_config
sshd_auth: 'no'
sshd_dns: 'no'
sshd_port: 22
#所有源码包和rpm包的存放路径
dest_dir: '/usr/local/src'


hosts主机信息:

[root@TrackerServer servers]# cat conf/hosts 
[test-servers]
test-server1   ansible_ssh_host=192.168.0.128
test-server2   ansible_ssh_host=192.168.0.129
[web-servers]
guanwang_serveransible_ssh_host=192.168.0.45
iecp_web_serveransible_ssh_host=192.168.0.198
imss_serveransible_ssh_host=192.168.0.224
osms_serveransible_ssh_host=192.168.0.226
olsm_serveransible_ssh_host=192.168.0.228
imss_wap_serveransible_ssh_host=192.168.0.193
wap_serveransible_ssh_host=192.168.0.164
boss_serveransible_ssh_host=192.168.0.215
img_ngx_Serveransible_ssh_host=192.168.0.238
[all-servers:children]
test-servers
web-servers


ok

1 现在开始安装:

root@TrackerServer servers]# ansible-playbook website.yml --tags "tomcat"
PLAY [test-servers] *********************************************************** 
TASK: [tomcat | upload jdk1.7] ************************************************ 
changed: [test-server1]
changed: [test-server2]
TASK: [tomcat | be sure jdk1.7 installed] ************************************* 
ok: [test-server2]
ok: [test-server1]
TASK: [tomcat | upload or sync tomcat-native] ********************************* 
changed: [test-server1]
changed: [test-server2]
TASK: [tomcat | upload or sync tomcat1.7] ************************************* 
changed: [test-server2]
changed: [test-server1]
TASK: [tomcat | Extract tomcat1.7] ******************************************** 
changed: [test-server1]
changed: [test-server2]
TASK: [tomcat | Extract tomcat-native] **************************************** 
changed: [test-server2]
changed: [test-server1]
TASK: [tomcat | install directory] ******************************************** 
changed: [test-server2]
changed: [test-server1]
TASK: [tomcat | install tomcat-native scripts] ******************************** 
changed: [test-server2]
changed: [test-server1]
TASK: [tomcat | install tomcat-natvie] **************************************** 
changed: [test-server1]
changed: [test-server2]
TASK: [tomcat | isntall tomcat started script] ******************************** 
ok: [test-server1]
ok: [test-server2]
TASK: [tomcat | add tomcat script to service] ********************************* 
ok: [test-server2]
ok: [test-server1]
PLAY RECAP ******************************************************************** 
test-server1               : ok=11   changed=8    unreachable=0    failed=0   
test-server2               : ok=11   changed=8    unreachable=0    failed=0

2,设置tomcat的环境变量:

[root@TrackerServer servers]# ansible-playbook website.yml --tags "setpath"
PLAY [test-servers] *********************************************************** 
TASK: [tomcat | config path environ] ****************************************** 
ok: [test-server2]
ok: [test-server1]
TASK: [tomcat | command profile] ********************************************** 
changed: [test-server2]
changed: [test-server1]
PLAY RECAP ******************************************************************** 
test-server1               : ok=2    changed=1    unreachable=0    failed=0   
test-server2               : ok=2    changed=1    unreachable=0    failed=0

3 管理,配置启动tomcat

[root@TrackerServer servers]# ansible-playbook website.yml --tags "tomcat-conf"
PLAY [test-servers] *********************************************************** 
TASK: [tomcat | config tomcat start scripts] ********************************** 
ok: [test-server2]
ok: [test-server1]
TASK: [tomcat | config tomcat started srcirpt environ] ************************ 
changed: [test-server2]
changed: [test-server1]
TASK: [tomcat | config tomcat server.xml] ************************************* 
changed: [test-server2]
changed: [test-server1]
TASK: [tomcat | config tomcat-user.xml] *************************************** 
changed: [test-server2]
changed: [test-server1]
TASK: [tomcat | wait for tomcat to start] ************************************* 
ok: [test-server1]
ok: [test-server2]
NOTIFIED: [tomcat | restart tomcat] ******************************************* 
changed: [test-server2]
changed: [test-server1]
PLAY RECAP ******************************************************************** 
test-server1               : ok=6    changed=4    unreachable=0    failed=0   
test-server2               : ok=6    changed=4    unreachable=0    failed=0


通过ansible查看tomcat是否启动:

[root@TrackerServer servers]# ansible test-servers -a 'service tomcat status'
test-server2 | success | rc=0 >>
[00;32mTomcat is running with pid: 4768[00m
test-server1 | success | rc=0 >>
[00;32mTomcat is running with pid: 4929[00m


完毕!!


转载于:https://my.oschina.net/u/2420214/blog/620359

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 多tomcat服务 统一安装 统一部署 工具 shell编写 1 引言 基于JAVA开发项目,随着服务的越来越多,配置文件更是眼花缭乱,每次不知道因为配置问题浪费多少时间,更不知道因为配置问题出过多少问题。多台服务器来回切换,如果服务需要依赖,启动更是问题。 1.1 目的 一次修改,统一安装;操作简单,实用高效。 1.2 范围 本项目使用范围包括: * 基于JAVA开发项目 * 项目相关服务繁多 * 服务启动有依赖关系 1.3 读者 本需求规格说明书的阅读者或其他文档干系人有平台总监、产品经理、项目总监、项目经理、开发人员、测试人员、用户体验设计人员等。 2 项目总体描述 2.1 系统总体功能框架 2.2 系统功能列表 Exec 建立信任、初始命令 初始 Tools 提供服务与服务列表 扫描提供服务列表,获取配置信息 Conf 自动获取需要修改配置 自动生成 Bin 执行脚本 提供总执行与单一执行脚本 New 存放修改后配置文件 与bak保留文件成反比 Bak 存放原始配置文件 便于问题分析 Temp 存放临时文件 临时文件将及时删除无任何冗积 Workapp 存放war包 上传war包 3 功能描述 3.1 获取配置文件 通过本系统获取配置文件非常简单,只需用户提供服务列表,其他无需操作。服务列表如下: name ip serve 服务名称 192.168.0.1 /home/tomcat_服务名称 服务名称 192.168.1.2 /home/tomcat_服务名称 服务名称 192.168.1.2 /home/tomcat_服务名称 名词解释: name :服务名称,需与war包名称一致。 ip :服务器ip地址。 serve :Tomcat部署路径。 执行脚本,“.. /unifyDeploy/conf”自动生成用户所需修改配置文件,配置文件是通过筛选后生成,所以一个服务不管需要配置多少文件,这里只生成一个,方便修改与管理。 3.2 自动化统一安装部署 自动化统一安装部署,包括:上传解压war包、同步配置、启动服务、监控服务等。 list.ll one.sh pass.war startup.sh syn.cn two.sh 部署支持统一安装于分布式安装,每个脚本可以拆分开任意组合使用,比如: 1) 一套新环境tomcat中还未部署服务,只需调整上传war包脚本顺序,先上传war后,后续操作正常执行。 2) 迭代更新,功能稍作修改,原配置项无需修改,也只需调整上传war包脚本顺序,先获取原有配置,再上传更新war包,后续操作正常执行。 3.3 优缺点描述 优点描述: * 适用于统一安装部署,也适用于单独服务安装部署。 * 保留原始备份,方便部署前后配置对比。 * 操作简单、需求扩展能力强。 不足描述: * 暂时只适用于基于tomcat服务器项目。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值