Ansible 部署Tomcat(初始化怖辆、更新是复、重啟服務(wù))

更多關(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/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宪睹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蚕钦,更是在濱河造成了極大的恐慌亭病,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嘶居,死亡現(xiàn)場離奇詭異罪帖,居然都是意外死亡,警方通過查閱死者的電腦和手機邮屁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進(jìn)店門整袁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人佑吝,你說我怎么就攤上這事坐昙。” “怎么了芋忿?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵炸客,是天一觀的道長。 經(jīng)常有香客問我戈钢,道長痹仙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任殉了,我火速辦了婚禮开仰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘薪铜。我一直安慰自己众弓,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布隔箍。 她就那樣靜靜地躺著田轧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鞍恢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天,我揣著相機與錄音帮掉,去河邊找鬼弦悉。 笑死,一個胖子當(dāng)著我的面吹牛蟆炊,可吹牛的內(nèi)容都是我干的稽莉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼涩搓,長吁一口氣:“原來是場噩夢啊……” “哼污秆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起昧甘,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤良拼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后充边,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體庸推,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年浇冰,在試婚紗的時候發(fā)現(xiàn)自己被綠了贬媒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡肘习,死狀恐怖际乘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情漂佩,我是刑警寧澤脖含,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站仅仆,受9級特大地震影響器赞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜墓拜,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一港柜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧咳榜,春花似錦夏醉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至臣樱,卻和暖如春靶擦,著一層夾襖步出監(jiān)牢的瞬間腮考,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工玄捕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留踩蔚,地道東北人。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓枚粘,卻偏偏與公主長得像馅闽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子馍迄,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理福也,服務(wù)發(fā)現(xiàn),斷路器攀圈,智...
    卡卡羅2017閱讀 134,702評論 18 139
  • 一.ansible (1) ansible: ansible是一款新出現(xiàn)的自動化運維系統(tǒng)暴凑,基于python開發(fā)并集...
    楠人幫閱讀 1,948評論 0 8
  • ansible-playbook playbook簡介 playbook是ansible用于配置,部署量承,和管理被控...
    bdslinux閱讀 10,914評論 1 12
  • ansible是一款自動化運維工具搬设,基于python開發(fā),他是基于各個模塊來工作的撕捍,主要由以下幾個組件: conn...
    fengkaipeng閱讀 1,702評論 0 1
  • 1. 什么是Ansible拿穴,它有什么用? Ansible它是個集配置管理和應(yīng)用部署于一體的自動化運維工具忧风。 應(yīng)用情...
    午覺不眠Orz閱讀 1,527評論 0 0