ansible實戰應用之——自動化系統上線

一:系統上線基本流程
html

image.png


二:操做環境
nginx

ansible主機一臺:web

    軟件需求:haproxy、ansibleshell

    實現功能:haproxy健康監測,ansible自動化運維vim

tomcat主機兩臺:後端

    tomcatA:172.17.214.74tomcat

    tomcatB:172.17.214.75
bash

    軟件需求:tomcat、nginx服務器

    實現功能:tomcat實現war包上線,nginx負責健康監測頁面app


三:操做目的

經過ansible,實現war包上線的自動化操做 


四:操做步驟

一、配置階段

※操做環境:ansible主機

一、配置haproxy

①開啓後端服務器狀態監測頁面
②開啓基於頁面內容的健康監測
③指明後端主機

編輯haproxy主配置文件,寫入以下內容:
frontend  main
    mode http #基於http協議
    bind 0.0.0.0:1080 #監聽1080端口
    stats enable #開啓服務統計報告
    stats hide-version  #隱藏統計報告版本信息
    stats uri   /haproxyadmin?stats  #統計訪問報告url
    stats auth  admin:admin       #登錄認證
    stats admin if TRUE         #驗證模式
    default_backend  servers          #默認後端服務器組
backend servers
    balance     roundrobin
    option      httpchk GET /index.html      #開啓基於頁面內容的健康監測
    http-check expect string up  #定義健康內容爲"up"
    server      server1 172.17.214.74:80 check
    server      server2 172.17.214.75:80 check

二、修改ansible配置文件,定義主機組web
[root@server ~]# vim /etc/ansible/hosts
    [web]
    172.17.214.74
    172.17.214.75

三、建立test.sh腳本文件,用來在playbook中對部署後的新war包進行最後一步的健康檢測
        #!/bin/bash
        host_ip=`ifconfig | grep "\<inet\>" | grep -v 127.0.0.1 | head -1 | awk '{print $2}'` #截取tomcat主機ip
        curl http://$host_ip/web/ -D curl.txt &> /dev/null    #訪問tomcat網站,並將頭部信息存放在指定文件中
        num=`head -1 curl.txt| cut -d' ' -f2`    #截取網站響應碼
        if [[ "$num" =~ "^[2|3].*" ]];then      #判斷響應碼是否正常
                exit 0               #正常返回0
        else
                exit 1              #不正常返回1
        fi
        unset num host_ip

四、建立mark.yml文件,定義playbook
    
    - hosts: web
    remote_user: root
    serial: 1   ##按主機順序執行操做,主機A上線操做所有完成後再進行B的操做
    vars:
        - new: solo-2.2.0.war    #新建new變量,用以存放新上線war包名稱
    tasks:
        - name: mark down
          shell: echo "down">/data/webapps/index.html    #mark down,系統下線
        - name: stop tomcat
          service: name=tomcat state=stopped         #關閉tomcat服務
        - name: sleep 5s                   #等待5秒,給予服務關閉充分的時間
          shell: sleep 5
        - name: create new soft link            #新建軟連接,源文件替換爲新上線war包
          file: src=/data/{{ new }} dest=/var/lib/tomcat/webapps/web.war state=link force=yes
        - name: start tomcat                 #啓動tomcat服務
          service: name=tomcat state=started
        - name: sleep 5s                   #等待5秒,給予服務啓動充分的時間
          shell: sleep 5
        - name: test the new website
          shell: ./test.sh                  #判斷腳本是否執行正常,不正常則停止上線
        - name: mark up                    #mark up,系統上線
          shell: echo "up">/data/webapps/index.html

注意事項:

①playbook語法格式

②serial 1 :即一次執行一臺主機,tomcatA成功上線後再輪到tomcatB

③系統上線前,務必要檢測新部署網站是否能夠正常訪問。


※操做環境:tomcat主機 

一、配置tomcat,顯示管理頁面,用以管理war包的部署
二、配置nginx配置文件,確保後端tomcat主機root相同,並在root下建立index.html文件,寫入up/down
三、開啓nginx服務
四、將/data目錄設爲默認新war包存放目錄
五、建立 /var/lib/tomcat/webapps/web.war 文件,用以建立軟連接

二、測試階段

①試運行playbook,查看語法錯誤
[root@server ~]# ansible-playbook mark.yml -C -vv

②語法無誤,運行文件
[root@server ~]# ansible-playbook mark.yml

③查看tomcat管理頁面,查看是否部署

④再次部署新的.war文件,查看劇本可用性

三、實驗效果以下

查看tomcat管理員頁面,課件web.war已經自動部署上,點擊/web字樣便可進入網站

image.png


注:ansible有關playbook語法使用方法見我的博客 http://www.javashuo.com/article/p-eodvoqgz-cy.html

相關文章
相關標籤/搜索