2013-03-03

Puppet - 資訊系統自動化管理工具

阿舍之前就看到在介紹 Puppet 的文章,那個時候就覺得滿有興趣想要來玩玩的,但是,因為阿舍當時一陣眼花,誤以為免費版本的 Puppet 功能很少的樣子,所以,就沒有花時間來給它研究一下哩 ! 直到最近,阿舍在試 Vagrant 時,看到說 Vagrant 有整合 Puppet,可以用 Puppet 來控制和設置虛擬機器的環境時,才就花了時間來看看哩 !

Puppet 功能圖解說明 ( Credit PuppetLabs)

阿舍研究後,發現這個 Puppet 真是系統管理人員的一個必學好物哩 ! 因為 Puppet 應用的好的話,可以讓系統管理人員省很多事哩 ! 這個 Puppet 是由 Luke Kanies 先生在 2005 年發起的專案,這個 Luke Kanies 先生是一位非常資深的系統管理人員,就因為在當了很多年的系統管理人員後,還是找不到好用的管理工具,所以,就自己跳下去開發,也因此讓這個 Puppet 和市面上的這類軟體不太一樣哩 !

Puppet 主要支援的作業系統是 Unix-like 的,像是 Linux、FreeBSD、OS X、AIX 和 HP-UX 等,而 WIndows 則是在最近的版本才開始支援的,不過,只有有限的支援,像是只能做檔案的管理之類的自動化,還沒辦法像在其它作業系統那樣的完整,不過,這應該是和 Puppet 的設計與執行方有關哩 !

阿舍覺得這個 Puppet 和其它自動化管理軟體的最大不同,就在於 Puppet 提供給系統管理人員用撰寫自動化作業的配置語言 ( Configuration Language,也稱為 Puppet Language),不像大部份的自動化管理工具一般,要像寫 Shell 程式一樣的一步步的告訴自動化管理工具要做什麼和怎麼做,而 Puppet 只要知道系統管理人員需要的是什麼結果,Puppet 就會自己去找出執行方式來達成哩 ! 有沒有很神奇 ? 是不是很方便哩 !

其實並沒有那麼的神奇,Puppet 將系統管理人員需要達成結果分成許多預先定義好的 Type (可自行定義),然後,搭配不同以 Provider 來區分不同作業系統,所以,當 Puppet 收到一個要求時,只要利用這二項資訊和系統管理人員用 Puppet Language 提供的資訊,那麼 Puppet 就可以知道要怎麼去完成了哩 !

舉例來說,像要在電腦上安裝 Vagrant 套件這件事,系統管理人員只要用 Puppet Language 來告訴 Puppet 說,在每一台電腦上要存在有 Vagrant 套件,那麼 Puppet 就會自己去判斷電腦的作業系統為何,然後,檢查電腦上是否有安裝過 Vagrant ,如果沒有就選擇適當的指令來安裝 Vagrant,如果已經有安裝過,就不需要再做任何的動作哩 !

Puppet 可以採用主從架構,也可以只用單機,不過,實務上多以主從架構為主,也就是說,Puppet 會有一個 Server 版安裝在一台電腦上,然後,要被管理的電腦上則是需要安裝 Puppet 的 Agent 來透過 SSL 協定連線以提供該電腦的資訊 (可提供資訊設備盤點功能)和執行從 Puppet Server 傳來的指令哩 ! 這個部份就和大部份旳自動化管理工具沒有太大的差別哩 !

Puppet 是採用 Ruby 開發的開放原始碼軟體,早期版本是以 GPL 授權發行,在 Puppet 2.7.0 版之後改採更寬鬆的 Apache 2.0 授權方式,另外,後來也推出收費的 Puppet Enterprise 版本,阿舍看了一下免費和付費的比較表,發現主要的差別應該是有在有整合性的圖型介面和技術支援哩 ! 然後,再看一下付費的價格表,喔 ! 阿舍覺得不算便宜哩 ! 10台內免費,之後一台一年要收 99 美金哩 ! 不過,阿舍覺得 Puppet 的開放原始碼版本應該就夠用了,不太會需要去付費的,

阿舍覺得這個 Puppet 對使用 Unix-like 的電腦環境或是虛擬機器環境是很好用的管理工具,如果你有多台非 Windows 的伺服器需要管理的話,阿舍就非常的建議你花點時間來學一下,之後應該可以讓你的工作變的更容易些哩 !

參考資料:
Pro Puppet (Google Books)
Puppet 2.7 Cookbook (Google Books)
http://puppetlabs.com/puppet/what-is-puppet/
http://en.wikipedia.org/wiki/Puppet_%28software%29
https://puppetlabs.com/blog/announcing-puppet-enterprise-2-5/

推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

沒有留言 :

張貼留言

歡迎留言提問和討論 .... 😁