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
浏覽器打開位址檢視是否能用。