一種基于云計算平臺的應用自動化部署方法
【技術領域】
[0001] 本發明涉及云計算應用自動部署技術領域,特別是一種基于云計算平臺的應用自 動化部署方法。
【背景技術】
[0002] 目前主流云計算平臺只提供了彈性伸縮的計算資源,對于希望將自己的應用迀移 到云計算平臺上的用戶來說,這還遠遠不夠。如何自動化地安裝、部署和配置用戶應用環境 所依賴的操作系統、數據庫、中間件及其他應用程序是當前該領域的研究熱點。目前只有亞 馬遜公司和谷歌公司的云計算平臺提供類似的服務。亞馬遜公司的AWS使用BitNami來提供 自動化部署方面的支持,BitNami用協議棧的方式打包一個Web應用程序和所依賴的組件 (包括Web服務器、數據庫、運行中間件等),簡化了部署的復雜程度。目前僅支持亞馬遜云計 算平臺。而谷歌公司的Google App Engine,幫助用戶在提供的基礎架構上運行網絡應用程 序,這種方式需要用戶二次開發,對于現有的并不是用Google App Engine SDK開發的應用 來說,還是不能順利迀移到云端。而對于國內的各大云計算平臺來說,目前都不支持應用程 序級別的自動化部署。除此以外,目前的云計算平臺的應用自動化部署還存在以下的問題:
[0003] 1、為了使應用能夠運行起來,還需要安裝一些中間件或輔助軟件,這是一項與用 戶的應用無關但需要用戶操作的工作。例如用戶在虛擬機上部署Web應用環境時,需要安裝 運行時語言中間件和Web服務器,如安裝Java需要配置系統環境變量,配置出錯不僅導致應 用無法運行,且修改過程需要定位錯誤原因,加大了用戶負擔。當用戶需要部署的虛擬機數 量規模較大時,如何快速有效地部署成為一個難題。
【發明內容】
[0004] 本發明解決的技術問題在于提供一種云平臺上應用自動化部署的方法,解決傳統 應用部署中需要人工干預進行應用依賴環境安裝、應用環境配置的問題。
[0005] 本發明解決上述技術問題的技術方案是:
[0006] 所述的方法包括以下步驟:
[0007] 步驟1:用戶選擇虛擬機并通過認證鑒權模塊發起部署應用的請求;
[0008] 步驟2:用戶通過認證鑒權模塊選擇將要部署的應用軟件及版本;
[0009]步驟3:云計算平臺相應接收到部署的請求,通過部署信息模塊查詢可供連接的部 署服務端信息;如果有多臺部署服務端,則隨機選擇一臺;連接部署服務端,進入下一步;
[0010] 步驟4:部署服務端根據待部署客戶端信息和部署軟件信息,生成唯一標識名,并 寫入部署信息模塊的腳本中;
[0011] 步驟5:部署服務端檢查該待部署客戶端是否是第一次向部署服務端發起請求,如 果沒有客戶端信息,則生成唯一標識名,分別寫入兩臺主機的hosts配置文件,且服務端生 成一個證書給客戶端;否則,跳過認證部分,進入下一步;
[0012]步驟6:服務端查詢部署信息模塊,通過文件模塊和腳本模塊將部署離線軟件包、 部署腳本及驅動腳本發送給客戶端;
[0013] 步驟7:客戶端執行驅動腳本,完成應用軟件部署;如果在部署時出現問題,則在下 一次周期連接服務端時重新部署。
[0014] 所述服務端指的是應用部署的主控端,可以是云計算平臺的一部分,也可以與云 計算平臺相互獨立;主要負責調用其他模塊;
[0015] 所述客戶端指的是要部署應用的虛擬機的操作系統。
[0016] 所述檢查該待部署客戶端是否是第一次發起請求的判定標準是讀取客戶端主機 的hosts文件中是否有服務端的IP和主機名映射。
[0017] 所述認證鑒權模塊采用標準的協議作為客戶端和服務端之間的驗證協議;當客戶 端在第一次連接服務端時,服務端需要判斷是否接受客戶端的請求,并授予客戶端證書;使 客戶端找到正確的服務端;
[0018] 所述部署信息模塊包含了待部署客戶端的基本信息,包括客戶端的主機名,地址, 哪些軟件需要被部署等等;服務端通過讀取部署信息,確定所連接的客戶端需要配置哪些 內容。
[0019] 所述文件模塊用于支持離線安裝,主要包括一些離線的安裝包信息;當一個客戶 端需要安裝指定軟件時,服務端查詢部署信息模塊中的記錄,并將指定的和依賴的文件傳 送給客戶端;
[0020] 所述腳本模塊包括兩個部分的腳本,一個是軟件在配置或自動運行時文件模塊配 合使用的腳本;另一個部分是驅動腳本,一般使用puppet語言編寫,負責組織一個部署子單 元中的文件和腳本,這些驅動腳本會描述文件和腳本的關系以及各個部署子單元之前的關 系,以類的組成來完成一個部署子單元的描述。
[0021] 本發明的方法能產生如下的有益效果:
[0022] 本發明的機制提供自動化應用軟件安裝部署,用戶只需要選擇自己指定的中間件 或軟件,就可以完成基本環境的部署,用戶就可以只關注于自己的應用。解決了傳統應用部 署中需要人工干預進行應用依賴環境安裝、應用環境配置的問題,實現了應用的自動化部 署。
【附圖說明】
[0023] 下面結合附圖對本發明進一步說明:
[0024]圖1為本發明的流程圖。
【具體實施方式】
[0025]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完 整的描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于 本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他 實施例,都屬于本發明保護的范圍。
[0026]見圖1所示,下面以并根據四個模塊逐一介紹,具體講述本發明的一個具體實施方 式。
[0027] 1、認證鑒權模塊
[0028] 該模塊要求給服務端和客戶端分配唯一的標識名,這里采用完全域名來作為主機 的唯一識別方法。完全域名通過用主機名加上全路徑的表示方法,從邏輯上明確了主機在 網絡上的位置。然而,依賴于服務器完成域名到地址的翻譯過程,我們的環境里沒有服務 器。
[0029] //標識號生成算法
[0030] A-netmask.split(( · ')
[0031] B-ipaddress · split(( · ')
[0032] for i-0 to length(B)
[0033] while( length(B[ i]) <3)
[0034] B[i]-"0"+B[i];
[0035] end while
[0036] end for
[0037] if(A[l]!=,,255")
[0038] name-B[l]+B[2]+B[3];
[0039] else if(A[2]!="255")
[0040] name-B[2]+B[3]
[0041 ] else if(A[3]!="255")
[0042] name-B[3]
[0043] end if
[0044] name-name+"· com"
[0045] 有了唯一標識的主機名后,客戶端通過以下命令向服務端申請證書。這里采用 puppet工具進行通信
[0046] puppet agent-server = server.puppet.com-no-daemonize-verbose
[0047] 服務端可以看到目前所有請求證書的客戶端情況。
[0048] rootiserver:~#puppet cert-list
[0049] a238.com,,(CC:A5:B5:01:7F:45:68:76:7F:37:51:26:24:61:C0