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
[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

浏览器打开地址查看是否能用。







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值