天天看點

puppet 基礎-tomcat

centos 系統 puppet 部署tomcat

在1.html裡寫入test。 # cat 1.html test #jar -cvf test.war 1.html 将檔案1.html 打成test.war包。使用這個war包作為tomcat的項目。

一 . 安裝tomcat 建立子產品 tomcat-deploy-7_0_65 [[email protected] modules]# tree tomcat-deploy-7_0_65 tomcat-deploy-7_0_65/ ├── files │   ├── apache-tomcat-7.0.65.tar.gz │   ├── tomcat-deploy-7.0.65.sh │   └── tomcat-restart-7.0.65.sh ├── manifests │   ├── before.pp │   ├── init.pp │   └── install.pp └── templates

3 directories, 6 files

init.pp

[[email protected] manifests]# cat init.pp  class tomcat-deploy-7_0_65 {   include tomcat-deploy-7_0_65::before   include tomcat-deploy-7_0_65::install }

before.pp

[[email protected] manifests]# cat before.pp  class tomcat-deploy-7_0_65::before {   file { "/tools/tomcat-deploy-7.0.65":     ensure => directory,     owner  => "root",     group  => "root",     mode   => "0775"   }

  group { 'web':     ensure => present,     name => 'web',     gid => '601',     allowdupe => true   }

  user { 'web':     ensure => present,     uid => '601',     allowdupe => true,     groups => 'web',     managehome => true,     home => '/home/web',     shell => '/bin/bash'   }

  file { "/tools/tomcat-deploy-7.0.65/apache-tomcat-7.0.65.tar.gz":     source => "puppet://master-192.168.9.157.centos.test.com/files/tomcat-deploy-7_0_65/files/apache-tomcat-7.0.65.tar.gz",     owner => "root",     group => "root",     mode => "744"   }       file { "/tools/tomcat-deploy-7.0.65/tomcat-deploy-7.0.65.sh":     source => "puppet://master-192.168.9.157.centos.test.com/files/tomcat-deploy-7_0_65/files/tomcat-deploy-7.0.65.sh",     owner => "root",     group => "root",     mode => "744"   }

  file { "/tools/tomcat-deploy-7.0.65/tomcat-restart-7.0.65.sh":     source => "puppet://master-192.168.9.157.centos.test.com/files/tomcat-deploy-7_0_65/files/tomcat-restart-7.0.65.sh",     owner => "root",     group => "root",     mode => "744"   } }

install.pp

[[email protected] manifests]# cat install.pp  class tomcat-deploy-7_0_65::install {   exec { "install tomcat-deploy-7.0.65":     cwd => "/tools/tomcat-deploy-7.0.65",     command => "sh /tools/tomcat-deploy-7.0.65/tomcat-deploy-7.0.65.sh",     user => "root",     group => "root",     path => ["/usr/bin:/usr/sbin:/bin:/sbin"],     require => Class[tomcat-deploy-7_0_65::before]   } }

tomcat-deploy-7.0.65.sh tomcat部署腳本

[[email protected] files]# cat tomcat-deploy-7.0.65.sh  #!/bin/sh

rootpath=/tools/tomcat-deploy-7.0.65 gzpath=${rootpath}/apache-tomcat-7.0.65.tar.gz dirpath=${rootpath}/apache-tomcat-7.0.65 restartfile=${rootpath}/tomcat-restart-7.0.65.sh

tar zxvf ${gzpath} mv ${dirpath} /opt/tomcat

if [ ! -d /opt/tomcat_wsp ];then   mkdir -p /opt/tomcat_wsp fi

chown -R web:web /opt/tomcat chown -R web:web /opt/tomcat_wsp

if [ -f ${restartfile} ];then   chown -R web:web ${restartfile} fi

exit 0

tomcat-restart-7.0.65.sh   tomcat 啟動和停止腳本

[[email protected] files]# cat tomcat-restart-7.0.65.sh  #!/bin/sh

export CATALINA_BASE="/opt/tomcat" export JRE_HOME="/usr/local/jdk1.7.0_79" export CATALINA_HOME="/opt/tomcat"

binpath=/opt/tomcat/bin

start() {   ps -ef|grep java|grep '/opt/tomcat'   if [ $? -eq 0 ];then     echo "tomcat is running,can not start"     exit 1   else     sh ${binpath}/catalina.sh start     if [ $? -eq 0 ];then       echo "tomcat start success"     else       echo "tomcat start fail"       exit 1     fi   fi }

stop() {   ps -ef|grep java|grep '/opt/tomcat'   if [ $? -eq 1 ];then     echo "tomcat is already stop,can not stop again"     exit 1   else         sh ${binpath}/catalina.sh stop     if [ $? -eq 0 ];then       echo "tomcat stop success"     else       echo "tomcat stop fail"       exit 1     fi   fi }

case "$1" in     start)         start         ;;     stop)         stop         ;;     restart)         stop         sleep 10         start         ;;     *)         echo "Usage: $0 {start|stop|restart}" esac

exit 0

二.  部署項目 建立子產品 tomcat-restart-7_0_65 [[email protected] modules]# tree tomcat-restart-7_0_65/ tomcat-restart-7_0_65/ ├── files │   ├── catalina.sh │   ├── restart.sh │   ├── server.xml │   └── test.war ├── manifests │   ├── before.pp │   ├── init.pp │   └── install.pp └── templates

3 directories, 7 files

init.pp

[[email protected] manifests]# cat init.pp  class tomcat-restart-7_0_65 {   include tomcat-restart-7_0_65::before   include tomcat-restart-7_0_65::install }

before.pp

[[email protected] manifests]# cat before.pp  class tomcat-restart-7_0_65::before {   file { "/tools/tomcat-restart-7.0.65":     ensure => directory,     owner  => "root",     group  => "root",     mode   => "0775"   }      file { "/tools/tomcat-restart-7.0.65/test.war":     source => "puppet://master-192.168.9.157.centos.test.com/files/tomcat-restart-7_0_65/files/test.war",     owner => "root",     group => "root",     mode => "744"   }      file { "/tools/tomcat-restart-7.0.65/restart.sh":     source => "puppet://master-192.168.9.157.centos.test.com/files/tomcat-restart-7_0_65/files/restart.sh",     owner => "root",     group => "root",     mode => "744"   } 

  file { "/tools/tomcat-restart-7.0.65/catalina.sh":     source => "puppet://master-192.168.9.157.centos.test.com/files/tomcat-restart-7_0_65/files/catalina.sh",     owner => "root",     group => "root",     mode => "744"   }

  file { "/tools/tomcat-restart-7.0.65/server.xml":     source => "puppet://master-192.168.9.157.centos.test.com/files/tomcat-restart-7_0_65/files/server.xml",     owner => "root",     group => "root",     mode => "744"   }    }

install.pp

[[email protected] manifests]# cat install.pp  class tomcat-restart-7_0_65::install {   exec { "install tomcat-restart-7.0.65":     cwd => "/tools/tomcat-restart-7.0.65",     command => "sh /tools/tomcat-restart-7.0.65/restart.sh",     user => "root",     group => "root",     path => ["/usr/bin:/usr/sbin:/bin:/sbin"],     require => Class[tomcat-restart-7_0_65::before]   } }

restart.sh  這個腳本寫的有點繁瑣(以後再改),主要功能是更換項目程式,調tomcat-deploy-7_0_65/tomcat-restart-7.0.65.sh 這個腳本重新啟動tomcat。 [[email protected] files]# cat restart.sh  #!/bin/sh

rootpath=/tools/tomcat-restart-7.0.65 warpath=${rootpath}/test.war serverpath=${rootpath}/server.xml server1path=/opt/tomcat/conf/server.xml catalinapath=${rootpath}/catalina.sh catalina1path=/opt/tomcat/bin/catalina.sh wsppath=/opt/tomcat_wsp/test

strdate=`date +%Y%m%d%H%M`

#建立目前時間的目錄 if [ ! -d ${rootpath}/${strdate}/test ];then   mkdir -p ${rootpath}/${strdate}/test fi

#判斷war包是否存在 if [ -f ${warpath} ];then   mv ${warpath} ${rootpath}/${strdate}/   cp ${rootpath}/${strdate}/test.war ${rootpath}/${strdate}/test/   cd ${rootpath}/${strdate}/test   /usr/local/jdk1.7.0_79/bin/jar -xvf ${rootpath}/${strdate}/test/test.war   rm -f ${rootpath}/${strdate}/test/test.war   #stop tomcat   sh /tools/tomcat-deploy-7.0.65/tomcat-restart-7.0.65.sh stop   retcode=$?   if [ $retcode -ne 0 ];then     exit $retcode   fi   sleep 10   #判斷server.xml檔案是否存在   if [ -f ${serverpath} ];then     mv ${serverpath} ${rootpath}/${strdate}/     rm -f ${server1path}      cp ${rootpath}/${strdate}/server.xml /opt/tomcat/conf/   fi   #判斷catalina.sh檔案是否存在   if [ -f ${catalinapath} ];then     mv ${catalinapath} ${rootpath}/${strdate}/     rm -f ${catalina1path}     cp ${rootpath}/${strdate}/catalina.sh /opt/tomcat/bin/   fi   #删除項目工程的軟連接配接   if [ -L ${wsppath} ];then     rm -fR ${wsppath}   fi   #建立新的工程軟連接配接   ln -s ${rootpath}/${strdate}/test ${wsppath}   #start tomcat   /tools/tomcat-deploy-7.0.65/tomcat-restart-7.0.65.sh start   retcode=$?   if [ $retcode -ne 0 ];then     exit $retcode   fi fi

exit 0

下面是agent機器執行後的 /tools/tomcat-restart-7.0.65目錄結構。 [[email protected] tools]# tree /tools/tomcat-restart-7.0.65/ tomcat-restart-7.0.65/ ├── 201606031722 │   ├── catalina.sh │   ├── server.xml │   ├── test │   │   ├── 1.html │   │   └── META-INF │   │       └── MANIFEST.MF │   └── test.war └── restart.sh

3 directories, 6 files

浏覽器打開位址檢視是否能用。

puppet 基礎-tomcat

繼續閱讀