1. 程式人生 > 其它 >puppet(一)——puppet是什麼?

puppet(一)——puppet是什麼?

本文轉載自朱雙印個人日誌:https://www.zsythink.net/archives/185

puppet是什麼,咱們先不用專業的名詞解釋它,咱們先描述一些工作場景,看明白這些工作場景,自然會知道puppet是什麼。

  • 場景一:

管理員想要在100臺伺服器上同時建立一個名叫”liuhaoran”的使用者,怎麼辦,當然,我們可以”手動解決”,登入每一臺伺服器,然後一臺一臺的建立使用者,如果你真的這樣幹,那麼我只能說,算你狠!!!但是,既然我們這篇文章是介紹puppet的,我們肯定會推薦你使用puppet解決這個問題。

  • 場景二:

公司新買了一堆雲伺服器,這些伺服器最終可能要提供相同的服務,現在需要管理員在這一堆伺服器上安裝一些相同的應用,而且安裝完成後,還需要這些伺服器上的應用自動啟動,怎麼辦,當然,手動解決算你狠,兄弟我服了,你說你寫指令碼解決,嗯,這是個辦法,在我沒有認識puppet之前我可能也會寫個指令碼,但是我們是介紹puppet的,我們會推薦你使用puppet解決這個問題。

  • 場景三:

在一些伺服器中,執行大批量的重複操作,我們可以使用puppet。

看完上述三個場景,你應該已經大概猜出puppet是幹嗎的了,沒錯,說的糙一點,你可以把它理解成批量處理工具,但是你又不能完全把它理解成批量處理工具,因為除了批量處理,他還有一些別的功能和特性,我們暫且先這麼認為,以便我們入門。

像puppet這種工具有幾個專業的名詞可以用來稱呼它們:”配置管理工具”、”自動化運維管理工具”。

Linux中,常見的配置管理工具有puppet、saltstack、ansible、chef等,它們的功能類似,puppet算是這個領域裡面的老大哥,時間久,成熟,被廣泛的應用,google、twitter、redhat,cisco等大公司都用到了它,功能強大,puppet是使用ruby研發的,saltstack和ansible都屬於python系的, ansible和saltstack與puppet相比,屬於後起之秀,我們以後也可能會對它們進行總結,但是現在,我們只聊puppet。

那麼我把網上的專業解釋複製過來,以便為大家從更專業的角度解釋puppet是個什麼東西,如果你看不懂如下解釋,沒有關係,這並不影響我們學習puppet,因為網上的概念往往要把實際的東西說的高大上一點,以便顯得自己很NB,但是這樣往往有礙我們理解,所以,如下解釋你”只是看看”即可。

  • 以下專業解釋來自百度百科:

puppet是一種Linux、Unix、windows平臺的集中配置管理系統,使用自有的puppet描述語言,可管理配置檔案、使用者、cron任務、軟體包、系統服務等。puppet採用C/S星狀的結構,所有的客戶端和一個或幾個伺服器互動。每個客戶端週期的(預設半個小時)向伺服器傳送請求,獲得其最新的配置資訊,保證和該配置資訊同步。每個puppet客戶端每半小時(可以設定)連線一次伺服器端, 下載最新的配置檔案,並且嚴格按照配置檔案來配置客戶端。 配置完成以後,puppet客戶端可以反饋給伺服器端一個訊息。如果出錯,也會給伺服器端反饋一個訊息。

從上述專業的解釋中,我們可以得知puppet是C/S架構的,也就是說,它有服務端,也有客戶端(代理程式),也就是上述專業解釋中提到的C/S星狀結構,說白了就是一個或少數幾個服務端作為中心,一堆客戶端圍繞著服務端展開具體工作,管理員在puppet服務端中進行配置管理,通過服務端,將管理員的”配置”傳輸到客戶端,客戶端再將管理員的”配置”落實到具體的伺服器上。 用文字描述顯得太無力,我們畫個圖來看看:

剛才說的大段的話,描述的就是上圖中的場景。