基于ansible的生产环境部署构建(九) 角色tomcat

角色功能说明:

  • 该角色实现对客户端主机的多版本tomcat环境部署

角色部署:

  • 创建目录结构,创建软连接,关联默认变量文件
WorkDir=~/devops/ansible/os_init && cd ${WorkDir}
RoleName=tomcat
mkdir -pv roles/${RoleName}/{defaults,files,handlers,meta,tasks,templates,vars}
ln -s ${WorkDir}/defaults_var.yml roles/${RoleName}/defaults/main.yml
  • 创建日志切割功能脚本
cat >roles/${RoleName}/files/cat.sh<<\EOF
#!/bin/bash
source ~/.bash_profile
cd $(dirname $0)
d=$(date +%Y%m%d.%H.%M.%S)
# catalina.out 日切
cd ../logs/
cp catalina.out catalina.out.${d}
echo '' > catalina.out
tar -czf catalina.out.${d}.tar.gz catalina.out.${d} --remove-files
find . -name 'catalina.out.*.tar.gz' -type f -mtime +5 -exec rm -rf {} \;
# 杂项日志清理
find . -name 'catalina.*.log'     -type f -mtime +5 -exec rm -rf {} \;
find . -name 'host-manager.*.log' -type f -mtime +5 -exec rm -rf {} \;
find . -name 'localhost.*.log'    -type f -mtime +5 -exec rm -rf {} \;
find . -name 'manager.*.log'      -type f -mtime +5 -exec rm -rf {} \;
# access log 日切
cd /web/logs/access/tomcat
find . -name "*.txt"    -type f -mtime +0 -exec tar -czf {}.tar.gz {} --remove-files \;
find . -name "*.tar.gz" -type f -mtime +7 -exec  rm  -rf {} \;
EOF
  • 创建角色任务
cat >roles/${RoleName}/tasks/main.yml<<EOF
---
- name: "创建 tomcat 环境目录"
  file:
    path: /usr/local/tomcat
    state: directory
    owner: root
    group: root
    mode: 0755
- name: "分发 tomcat6 部署包"
  copy:
    src: ${WorkDir}/software/{{ tomcat6_name }}
    dest: /tmp
    owner: root
    group: root
    mode: 0644
- name: "分发 tomcat7 部署包"
  copy:
    src: ${WorkDir}/software/{{ tomcat7_name }}
    dest: /tmp
    owner: root
    group: root
    mode: 0644
- name: "分发 tomcat8 部署包"
  copy:
    src: ${WorkDir}/software/{{ tomcat8_name }}
    dest: /tmp
    owner: root
    group: root
    mode: 0644
- name: "部署 tomcat6"
  unarchive:
    src: /tmp/{{ tomcat6_name }}
    dest: /usr/local/tomcat
    remote_src: True
    creates: /usr/local/tomcat/{{ tomcat6_dirname }}
- name: "部署 tomcat7"
  unarchive:
    src: /tmp/{{ tomcat7_name }}
    dest: /usr/local/tomcat
    remote_src: True
    creates: /usr/local/tomcat/{{ tomcat7_dirname }}
- name: "部署 tomcat8"
  unarchive:
    src: /tmp/{{ tomcat8_name }}
    dest: /usr/local/tomcat
    remote_src: True
    creates: /usr/local/tomcat/{{ tomcat8_dirname }}
- name: "创建软连接 tomcat6"
  file:
    path: /usr/local/tomcat/tomcat6
    src: /usr/local/tomcat/{{ tomcat6_dirname }}
    state: link
- name: "创建软连接 tomcat7"
  file:
    path: /usr/local/tomcat/tomcat7
    src: /usr/local/tomcat/{{ tomcat7_dirname }}
    state: link
- name: "创建软连接 tomcat8"
  file:
    path: /usr/local/tomcat/tomcat8
    src: /usr/local/tomcat/{{ tomcat8_dirname }}
    state: link
- name: "权限统一"
  file:
    path: /usr/local/tomcat
    state: directory
    recurse: yes
    owner: root
    group: root
- name: "配置 tomcat6 jvm 参数"
  lineinfile:
    path: /usr/local/tomcat/tomcat6/bin/catalina.sh
    regexp: "^cygwin=false$"
    line: "JAVA_OPTS=\"{{ opts3 }}\"\n# JAVA_OPTS=\"{{ opts4 }}\"\ncygwin=false "
    backrefs: yes
- name: "配置 tomcat7 jvm 参数"
  lineinfile:
    path: /usr/local/tomcat/tomcat7/bin/catalina.sh
    regexp: "^cygwin=false$"
    line: "JAVA_OPTS=\"{{ opts3 }}\"\n# JAVA_OPTS=\"{{ opts4 }}\"\ncygwin=false "
    backrefs: yes
- name: "配置 tomcat8 jvm 参数"
  lineinfile:
    path: /usr/local/tomcat/tomcat8/bin/catalina.sh
    regexp: "^cygwin=false$"
    line: "JAVA_OPTS=\"{{ opts3 }}\"\n# JAVA_OPTS=\"{{ opts4 }}\"\ncygwin=false "
    backrefs: yes
- name: "统一配置 tomcat 端口"
  shell:
    "sed -i 's/8005/18080/g' tomcat*/conf/server.xml && \
     sed -i 's/8443/9443/g'  tomcat*/conf/server.xml && \
     sed -i 's/8009/28080/g' tomcat*/conf/server.xml"
  args:
    chdir: /usr/local/tomcat
    warn: false
- name: "统一配置8080端口参数"
  shell:
    sed -i 's|Connector port="8080" protocol="HTTP/1.1"|Connector port="8080"  protocol="HTTP/1.1"\n
               \t\tmaxThreads="800" acceptCount="1000"\n
               \t\tcompression="on"\n
               \t\tcompressionMinSize="2048"\n
               \t\tnoCompressionUserAgents="gozilla,traviata"\n
               \t\tcompressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"|g' tomcat*/conf/server.xml
  args:
    chdir: /usr/local/tomcat
    warn: false
- name: "统一配置项目目录"
  shell:
    "sed -i 's|appBase=\"webapps\"|appBase=\"/web/project/tomcat\"|g' tomcat*/conf/server.xml"
  args:
    chdir: /usr/local/tomcat
    warn: false
- name: "配置 tomcat6 access 日志"
  shell:
    sed -i 's|<!-- Access log processes all example|
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/web/logs/access/tomcat"\n
               \t\tprefix="localhost_access_log." suffix=".txt"\n
               \t\tpattern="{\&quot;AccIP\&quot;:\&quot;%{X-FORWARDED-FOR}i\&quot;,\&quot;LogIP\&quot;:\&quot;%l\&quot;,\&quot;AuthIP\&quot;:\&quot;%u\&quot;,\&quot;AccessTime\&quot;:\&quot;%t\&quot;,\&quot;Method\&quot;:\&quot;%r\&quot;,\&quot;Status\&quot;:\&quot;%s\&quot;,\&quot;SendBytes\&quot;:\&quot;%b\&quot;,\&quot;ProcessTime\&quot;:\&quot;%D\&quot;,\&quot;QueryString\&quot;:\&quot;%q\&quot;,\&quot;Partner\&quot;:\&quot;%{Referer}i\&quot;,\&quot;AgentVersion\&quot;:\&quot;%{User-Agent}i\&quot;}"\n
               \t\tresolveHosts="false"/>\n
        \t<!--  Access log processes all example|g' tomcat6/conf/server.xml
  args:
    chdir: /usr/local/tomcat
    warn: false
- name: "配置 tomcat7 和 tomcat8 access 日志目录"
  shell:
    sed -i 's#directory="logs"#directory="/web/logs/access/tomcat"#g' tomcat[78]/conf/server.xml
  args:
    chdir: /usr/local/tomcat
    warn: false
- name: "配置 tomcat7 和 tomcat8 access 日志格式"
  shell:
    sed -i 's|pattern="%h %l %u %t \&quot;%r\&quot; %s %b" />|
              pattern="{\&quot;AccIP\&quot;:\&quot;%{X-FORWARDED-FOR}i\&quot;,\&quot;LogIP\&quot;:\&quot;%l\&quot;,\&quot;AuthIP\&quot;:\&quot;%u\&quot;,\&quot;AccessTime\&quot;:\&quot;%t\&quot;,\&quot;Method\&quot;:\&quot;%r\&quot;,\&quot;Status\&quot;:\&quot;%s\&quot;,\&quot;SendBytes\&quot;:\&quot;%b\&quot;,\&quot;ProcessTime\&quot;:\&quot;%D\&quot;,\&quot;QueryString\&quot;:\&quot;%q\&quot;,\&quot;Partner\&quot;:\&quot;%{Referer}i\&quot;,\&quot;AgentVersion\&quot;:\&quot;%{User-Agent}i\&quot;}"\n
              \t\tresolveHosts="false"/>|g' tomcat[78]/conf/server.xml
  args:
    chdir: /usr/local/tomcat
    warn: false
- name: "分发 tomcat6 日志切割脚本"
  copy:
    src: cat.sh
    dest: /usr/local/tomcat/tomcat6/bin/
    owner: root
    group: root
    mode: 0644
- name: "分发 tomcat7 日志切割脚本"
  copy:
    src: cat.sh
    dest: /usr/local/tomcat/tomcat7/bin/
    owner: root
    group: root
    mode: 0644
- name: "分发 tomcat8 日志切割脚本"
  copy:
    src: cat.sh
    dest: /usr/local/tomcat/tomcat8/bin/
    owner: root
    group: root
    mode: 0644
- name: "权限修正"
  shell:
    find tomcat*/ -type f ! -perm -o=r -exec chmod o+r {} \; && \
    find tomcat*/ -type d ! -perm -o=rx -exec chmod o+rx {} \;
  args:
    chdir: /usr/local/tomcat
    warn: false
EOF
  • 创建任务playbook并执行
cat >os-init-8-${RoleName}.yml<<EOF
---
- hosts: all
  remote_user: sudoler
  gather_facts: true
  become: yes
  become_user: root
  become_method: su
  roles:
    - ${RoleName}
EOF
ansible-playbook -i inventory/hosts os-init-8-${RoleName}.yml

注意事项:

  • 如果要进行tomcat包的升级,则:
    • 1,将高版本的包上传到文件共享服务器
    • 2,修改 defaults_var.yml 中相应信息
    • 3,下载包到部署主机 ansible-playbook -i inventory/hosts os-init-1-*.yml
    • 4,重新执行本角色,完成升级 ansible-playbook -i inventory/hosts os-init-8-*.yml
    • 5,这个升级可以是降级

[TOC]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值