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
[root@master-192 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
[root@master-192 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
[root@master-192 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
[root@master-192 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部署脚本
[root@master-192 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 启动和停止脚本
[root@master-192 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
[root@master-192 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
[root@master-192 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
[root@master-192 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
[root@master-192 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。
[root@master-192 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目录结构。
[root@app-192 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
浏览器打开地址查看是否能用。