更多關(guān)注:http://www.mknight.cn/
一、目錄結(jié)構(gòu)
1竖螃、新建目錄結(jié)構(gòu)
[root@localhost ansible]# mkdir -pv roles/test_tomcat/{vars,tasks,files,templates}
mkdir: 已創(chuàng)建目錄 "roles/test_tomcat"
mkdir: 已創(chuàng)建目錄 "roles/test_tomcat/vars"
mkdir: 已創(chuàng)建目錄 "roles/test_tomcat/tasks"
mkdir: 已創(chuàng)建目錄 "roles/test_tomcat/files"
mkdir: 已創(chuàng)建目錄 "roles/test_tomcat/templates"
2淑廊、創(chuàng)建總調(diào)度文件
---
- name: 在測試環(huán)境部署Tomcat
hosts: 192.168.1.7
vars:
listen_port: 8410
project: car
tomcat_dir: /data/qsc_user/{{ project }}
roles:
- { role: test_tomcat }
二、playbook
設(shè)定標(biāo)簽特咆,根據(jù)指定標(biāo)簽執(zhí)行具體任務(wù)
1)初始化項目 init
2)更新部署 deploy
3)重啟服務(wù) restart
1季惩、tasks目錄
tasks/
├── deploy.yml 部署
├── init.yml 初始化
├── main.yml
└── restart.yml 重啟服務(wù)
main.tml
---
- include: init.yml
tags:
- init
- include: restart.yml
tags:
- restart
- include: deploy.yml
tags:
- deploy
init.yml
- name: copy template
unarchive: src=tomcat-template.tar.gz dest=/usr/src
- name: 創(chuàng)建項目{{ project }}
file: path={{ tomcat_dir }} state=directory force=yes
- name: 判斷模塊{{ module }}是否已經(jīng)存在,如果存在則刪除
stat: path={{ tomcat_root }}
register: reg
- name: 刪除舊版本的模塊{{ module }}
file: path={{ tomcat_root }} state=absent
when: reg.stat.exists
- name: 創(chuàng)建項目{{ project }}模塊{{ module }}
command: cp -r /usr/src/tomcat-template/ "{{ tomcat_root }}"
- name: 生成catalina.sh
template: src=catalina.j2 dest={{ tomcat_root }}/bin/catalina.sh
- name: 生成server.xml
template: src=server.j2 dest={{ tomcat_root }}/conf/server.xml
- name: 設(shè)置屬組
file: path={{ tomcat_dir }} recurse=yes owner=qsc_user group=qsc_user
deploy.yml
---
- name: 建立備份目錄
file: dest={{ backup_dir }} state=directory
- name: stop tomcat.
shell: su -c {{ tomcat_root }}/bin/shutdown.sh qsc_user
- name: 稍等一下
pause: seconds=10
- name: 驗證服務(wù)是否關(guān)閉
wait_for: port={{ RUN_PORT }} delay=3 state=stopped timeout=10
- name: 備份現(xiàn)有程序
command: mv "{{ tomcat_root }}"/webapps "{{ backup_dir }}/{{ module }}"-webapps.bak
- name: 建立webapps目錄
file: dest={{ tomcat_root }}/webapps state=directory owner=qsc_user group=qsc_user
#- name: 下載新程序
# get_url: url=http://www.xxx.com/jenkins/view/test/job/{{ porject }}/{{ buidnum}}/artifact/{{ project-module }}/target/ROOT.war dest="{{ tomcat_root }}"/webapps force=yes force_basic_auth=yes url_username=xxxx url_password=xxxx
- name: start tomcat.
shell: su -c {{ tomcat_root }}/bin/startup.sh qsc_user
- name: 等待服務(wù)啟動
wait_for: port={{ RUN_PORT }} delay=5 timeout=30
- name: 重啟服務(wù)執(zhí)行完畢
shell: echo "Restart Successful !!!"
restart.yml
---
- name: stop tomcat.
shell: su -c {{ tomcat_root }}/bin/shutdown.sh qsc_user
- name: 驗證服務(wù)是否關(guān)閉
wait_for: port={{ RUN_PORT }} delay=3 state=stopped timeout=10
- name: start tomcat.
shell: su -c {{ tomcat_root }}/bin/startup.sh qsc_user
- name: 等待服務(wù)啟動
wait_for: port={{ RUN_PORT }} delay=5 timeout=30
- name: 重啟服務(wù)執(zhí)行完畢
shell: echo "Restart Successful !!!"
2、files目錄
[root@localhost files]# ll
drwxr-xr-x 9 root root 4096 11月 16 10:24 tomcat-template
-rw-r--r-- 1 root root 7765756 11月 16 10:24 tomcat-template.tar.gz
該目錄主要是為了存儲部署文件
3画拾、templates目錄
templates/
├── catalina.j2
└── server.j2
這兩項文件都是為了生成對應(yīng)的catalina.sh和server.xml文件啥繁,重要代碼分別為:
export JAVA_OPTS="
-server
-Dfile.encoding=UTF8
-Dsun.jnu.encoding=UTF8
-Denvironment.mode=test
"
JAVA_HOME=/usr/local/java
CATALINA_HOME=/data/qsc_user/{{ project }}/{{ module }}
<Server port="{{ STOP_PORT }}" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<!-- Security listener. Documentation at /docs/config/listeners.html
<Listener className="org.apache.catalina.security.SecurityListener" />
-->
<Connector port="{{ RUN_PORT }}" protocol="org.apache.coyote.http11.Http11NioProtocol"
URIEncoding="UTF-8"
minSpareThreads="64"
maxThreads="300"
enableLookups="false"
disableUploadTimeout="true"
connectionTimeout="20000"
acceptCount="1000"
redirectPort="8443"
/>
4、總調(diào)度文件
- name: 在測試環(huán)境部署Tomcat
hosts: 192.168.1.7
vars:
project: bike
module: web
project-module: bike-admin
STOP_PORT: "8410"
RUN_PORT: "9410"
date: '{{ date }}'
tomcat_dir: "/data/qsc_user/{{ project }}"
tomcat_root: "{{ tomcat_dir }}/{{ module }}"
backup_dir: "/data/backup/{{ project }}"
roles:
- { role: test_tomcat }
vars部分的變量可以放在vars目錄青抛,或者放在該文件旗闽。
5、整體目錄結(jié)構(gòu)
test_tomcat.yml
roles
├── test_tomcat
│ ├── files
│ │ ├── tomcat-template
│ ├── tasks
│ │ ├── deploy.yml
│ │ ├── init.yml
│ │ ├── main.yml
│ │ └── restart.yml
│ ├── templates
│ │ ├── catalina.j2
│ │ └── server.j2
│---└── vars
6脂凶、執(zhí)行playbook
ansible-playbook test_tomcat.yml -t init -vvv 初始化項目
ansible-playbook test_tomcat.yml -t deploy -vvv 部署服務(wù)
ansible-playbook test_tomcat.yml -t restart -vvv 重啟服務(wù)
--end
更多關(guān)注:http://www.mknight.cn/