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


完毕!!


你可能感兴趣的:(ansible批量安装tomcat)