基於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]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章