趨勢消費產品開發團隊導入DevOps流程中,使用的工具共分成六大類,而其中最關鍵的為組態管理工具及測量工具。

圖片來源: 

趨勢科技

想要發揮DevOps流程的威力,得有一套好用的DevOps工具。趨勢科技消費產品的開發團隊累積了多年DevOps導入經驗後,整理出了一套實戰用的DevOps工具包,這也是他們目前正在使用的主要DevOps軟體。

在這個DevOps工具包中的軟體又分成六大類,包括了版本控制工具、組態管理(Configuration Management)工具、持續整合(Continuous Integration)工具、測量(Measurement)工具、Log工具,以及服務上線的調度(Provisioning)工具。

趨勢科技研究開發部技術經理江盈宏表示,如果在時間資源有限,無法面面俱到的情況下,最重要的工具為組態管理工具及測量工具。

組態管理工具是DevOps核心

江盈宏認為,DevOps工具包中最重要應屬組態管理工具。透過組態管理工具幫助企業持續部署伺服器,而第二順位是測量工具,比方說Graphite、Icinga及Smokeping,使用它們監控系統的運作狀況。他表示,如果沒有過多的時間資源的話,第一要確保的是保持伺服器狀態穩定,第二則是確定伺服器都有在提供應有的服務。而為了滿足上述兩個前提,最基本的DevOps工具包得包含組態管理工具跟測量工具,如此就可以讓服務上線了。

使用Graphite,開發人員可以觀測系統長時間的平均運作狀況。

DevOps工具必須以Puppet為基礎才能建立起整體架構,Puppet是整個工具包的核心,以Puppet為基礎,導入其他DevOps工具並且跟Puppet做整合。Puppet在部署伺服器的同時,能掌握伺服器的部署狀況,而其他的工具透過Puppet,了解目前的部署狀態後,才能發揮各自的功能。

Puppet是一套用Ruby語言開發的組態管理工具,所以得使用Ruby特定領域語言(Domain-Specific Language)來撰寫組態樣版,稱之為Manifest檔,而Puppet再依據Manifest檔的內容,自動部署出一臺伺服器所需的軟體,並能進行大量自動部署。

每臺透過Puppet部署的伺服器上都會安裝一個Puppet agent程式,每隔30分鐘檢查一次,確保伺服器的組態符合Manifest檔的設定。

趨勢科技研究開發部資深工程師陳彥宏表示,在Puppet問世前另外有一個組態管理工具叫做CFEngine,由於趨勢開始導入DevOps時,CFEngine已經逐漸式微,Chef也尚未成熟,剛好Puppet有跟上DevOps的腳步而且比較穩定,所以趨勢就決定採用Puppet為組態管理工具。不過,他強調,Chef跟Puppet沒有誰優誰劣,只要工具符合開發者需求,並且能跟上時代潮流就是好的工具。

趨勢每次要部署一臺伺服器的時候,第一件事情就是在伺服器中安裝Puppet,然後連到Puppet主伺服器中。開發者必須預先設定好Manifest檔,而Puppet agent會自動比對Manifest檔,確保伺服器符合其所設定的組態,整個過程都是自動化。比方說,OS必須要確定SSH認證是正確的,或者NTP認證為正確,系統上的時間才會正確。

而最上層就是應用程式的部署,Puppet根據伺服器不同的需求,部署不同的應用程式,比方說,資料庫伺服器跟網頁伺服器需要的軟體就會有很大的差異。

由於Puppet跟Chef此類的組態管理工具都為開源軟體,所以在網路上都可以找到其他開發者釋出的Manifest範本檔,如Puppet Forge網站。趨勢表示,寫出第一個專案的樣版會是最困難的,不過當專案完成後,後續專案就可用第一個專案的樣版為基本架構,再根據新專案性質需求的差異來進行微調。

趨勢的做法是並用Puppet與Saltstack,利用Puppet建立起OS上的基礎架構,並且使用Puppet部署機器。Saltstack的運作,基本上根據開發人員寫的腳本去執行,特性較偏向一次性機制,其效果也類似於探針,可以使用於收集一次性的資料。如開發人員下指令,命令伺服器重啟HTTP服務,或是想要了解目前所有伺服器的核心版本,此時便可以透過Saltstack下指令,命令所有的伺服器回傳版本資訊給開發人員。

雖然Puppet跟Saltstack都被分類在組態管理工具,但在實務上,兩者的目的並不相同。

其他DevOps重要工具

在這個DevOps工具包中,測量工具也是另一個重要的工具,如Graphite、Icinga及Smokeping。Graphite用於收集伺服器運作的長期數據供開發人員參考,而Icinga跟Smokeping則是即時監控的工具,讓開發人員了解現在系統運作的現況為何。

比方說,使用Icinga監控特定的API,開發人員可以設定條件,如回傳時間必須要小於200ms,如果系統正常就會顯示綠燈。但江盈宏表示,無法透過即時監控得知系統長期運作的變化。如伺服器也許長時間處在回應時間小於10ms的穩定狀況,但也有可能一直處在平均回應時間190ms的尖峰狀況,此時開發者可用Icinga或Smokeping搭配Graphite,除了能了解伺服器的即時狀況外,也能從圖表看出伺服器長期的平均運作狀態。

江盈宏表示:「對DevOps來說,工具很重要,但是不一定要限定哪些工具,比方說組態管理工具,你可以考慮使用Puppet或Chef,但是其他如Ansible、Saltstack也都是很好的工具,並沒有優劣之分。」

趨勢科技開發人員透過Icinga監控系統,讓伺服器的即時狀態在圖表中一覽無遺,如果狀況正常即顯示綠燈,反之,則以紅燈警示。

相關報導請參考:DevOps變革三部曲(一)DevOps:搶先一步的IT競爭力


Advertisement

更多 iThome相關內容