天天看點

Chef和Puppet引領開源雲自動化

it專業人員越來越多地轉向chef和puppet開源雲自動化和編排。但是其他選項,如tosca,也值得我們探索。

部署軟體不是一件簡單的事,而在面向服務架構、web服務、微服務和雲的時代則更為複雜。虛拟化提出了新的挑戰,賦予應用程式和伺服器新的角色。基本的軟體操作工具正在轉變成自動化和流程編排工具,而開源軟體則充當了引路人的角色,特别是chef和puppet。

現今用來部署應用的軟體工具源自早期的一些工具,這些工具允許開發者将操作指南建立到應用中以達到簡化部署的目的。這個概念,即所謂的devops,目标是準确和快速部署,但達到目标的不同方法很快分成了兩種不同的派别。

chef和puppet二分天下

最簡單的自動化部署方式是通過腳本。手動部署軟體就是使用作業系統或雲管理系統的工具啟動指令,而腳本是一種可以靈活的将指令寫到一個檔案裡然後快速執行的方式。當今市場上有兩個很流行的開源自動化工具,chef和puppet。

chef模型被認為是指令式或規定式,因為它是過程化的 ,明确地描述了如何部署和連接配接雲應用程式元件。chef以一種對程式員友好的方式來建立“菜單”和“烹饪手冊”。每個部署的步驟可以獨立進行描述,這些獨立的菜單彙集到一起建立一個可重複的應用程式部署過程。由于每個操作步驟都可以在一個菜單中描述,所有隻要可以手動部署的步驟,chef都可以自動化。

然而同樣的程式員友好模式對某些使用者來說并不是他們想要的。對這些使用者來說,部署應用程式的合理方式是按照模型部署的最終狀态來描述。該開源devops工具對模型進行處理來建立最終的狀态。這個過程通常被稱為聲明式或基于目标的devops,也是另一種流行工具puppet的基礎。

如果chef是對程式員友好的,那puppet則最初源于營運人員,比起詳細的如何操作的步驟,他們更熟悉如何描述他們最終想要的狀态。就像進階語言讓程式設計更加簡單一樣,puppet模型能夠簡化部署描述。此外,由于最終狀态的這種方法可以用來描述在應用生命周期管理(alm)中的任何步驟,puppet自然可以接納一個完整的alm功能,這也是puppet的粉絲所喜歡的。

puppet的問題是你隻能部署那些可以被模型化的步驟。随着新的部署問題的出現,puppet模組化的過程開始變得同指令式腳本開發相似,而事實上,雲的發展已經開始彌合這一鴻溝。chef和puppet似乎變得更接近彼此,而一些新的devops工具則跨過聲明式/指令式的分隔線。不過,新的部署和配置管理的主候選工具全都支援聲明模型;沒有哪個是純指令模式的。

雲端的選擇

雲也迫使了部署和配置管理工具的發展。由于雲部署需要處理虛拟化的兩個層次,使得所有的部署和配置自動化變得更加複雜,而devops不得不同時面對部署和生命周期管理的問題。這反映在一個新的雲名詞上:編排。這反映了将複雜的步驟進行統一的需求。

編排連接配接了聲明式和指令式的模型,但聲明式編排似乎是更受歡迎的方法;描述一樣東西目前和期望的狀态是一種不錯的生命周期管理的方法。兩個新的純聲明式模型cfengine和juju,同chef,puppet一起正在獲得更多關注。這些工具側重于模型構造并提供政策和庫的支援。此外,同時支援聲明式和指令式的流程控制工具ansible和saltstack,正開始挑戰過去的那種兩極化方式。

目前為止提到的工具是從devops和傳統部署演變而來。那麼那些專門為雲而生的工具的進展怎樣了呢?國際标準化組織結構化資訊标準推進組織(oasis)開發了一個名為拓撲和業務流程規範雲應用的聲明性模型的方法。tosca解決了應用程式部署的最終狀态定義以及虛拟資源和資源池的具體模組化。tosca還內建了管理定義以支援生命周期自動化。

最适合你的雲編排方式是什麼?這裡有一些技巧:

支援包括chef在内的指令模型的工具是最強大的,在任何雲中支援幾乎任何種類的應用。但對于非程式員來說學起來更困難。

如果你計劃依賴雲端打包好的應用,那麼檢查該廠商是否擁有一個優選的編排方式,如果有的話,請在你的應用中也認真考慮采取這種方式。

tosca是雲自己的模型,但也是最不成熟的。如果你目前無法做到,則可以考慮聲明式雲編排工具,這樣過渡到tosca會更容易些。

如果你已經對資料中心部署的某個devops工具很熟悉,不要僅僅因為要遷移到雲了就棄之不用了。所有的devops工具都在變得更加雲友好。

盡管對編排這塊來說還相對較新,但各式各樣的開源,甚至一些商業的軟體包,都支援tosca。一些流行的基于tosca的雲編排工具包括cloudify,openstack heat,alien4cloud,以及aria和opentosca,這兩個都是規範的參考實作。除此之外,tosca被接受的原因還包括網絡功能虛拟化和軟體定義網絡。很多人認為tosca在這些領域的成功代表着這就是編排的未來。

編排對于應用的未來很關鍵。這是一種可以同時處理靈活應用和靈活虛拟資源的devops的形式。無論你用什麼方法來編排,都應該随着應用和虛拟化發展的同時不斷審查和修改細節。

====================================分割線================================

本文轉自d1net(轉載)

繼續閱讀