1. 程式人生 > 其它 >puppet(五)——puppet使用基礎

puppet(五)——puppet使用基礎

本文參考朱雙印個人日誌,連結:https://www.zsythink.net/archives/331

這篇文章將會介紹怎樣在單機模式下簡單的使用puppet。

在我們剛開始學習怎樣使用puppet時,我們可以不使用master/agent的方式執行puppet,而是使用單機的方式利用puppet進行測試或學習,等到我們能夠熟練使用puppet相關技能以後,我們再跨越到master/agent的工作模型中,這樣有利於我們學習使用puppet。

好了,我們現在正式開始認識一下puppet。

首先使用puppet help命令檢視puppet的使用幫助。

uploading-image-433559.png

從幫助資訊中可以看出,puppet的使用語法如下:

puppet [options] [options]

那麼我們解釋一下上述語法:

  • subcommand:表示子命令

  • options:表示選項,也就是說,使用puppet子命令時可以跟隨相應的選項。

  • action:表示動作,我們也可以把action理解為子命令的子命令。

  • options:action後面的options表示action對應的選項,我們也可以理解成子命令的子命令對應的選項。

從上圖中,我們可以看到,puppet有很多子命令,其實我們使用的puppet help命令,就是puppet的子命令

如果我們想要檢視子命令的用法,可以使用如下兩條命令:

puppet help subcommand
puppet man subcommand

如果我們想要檢視action的幫助資訊,可以使用如下命令:

puppet help subcommand action

因為我們現在使用單機模式下的puppet進行測試,所以,我們會用到”apply”子命令,這個子命令的作用就是在本地執行puppet的”清單”,說白了就是指定本機上的一個配置檔案,在單機模式下執行puppet,那麼,根據我們剛才提到的help命令的使用方法,我們可以使用如下命令檢視”apply”子命令的使用幫助:

puppet help apply

從返回的幫助資訊中,可以得知apply子命令的作用就是以獨立的方式,將清單中的配置應用於本機,也就是說,根據配置清單配置當前伺服器。

apply這個子命令有很多選項,而我們常用的有debug、verbose、noop等,debug表示顯示除錯資訊,verbose表示顯示詳細資訊,noop表示測試模式模擬執行,當然,這些選項都是可選的,從幫助資訊可以看到 file 是不可省的,file表示對應的配置檔案,也就是”清單”,所以,我們使用puppet apply manifestname即可執行對應的清單。

好了,現在我們已經知道怎樣在本地執行一個清單了,但是我們還不會寫清單,那麼,我們先寫一個最簡單的清單練練手。

我們說過,puppet的清單其實就是由多個資源組成的配置檔案而已,我們可以這樣理解,我們要操作什麼資源,就將資源寫入清單中即可。

假設,現在我們想要使用puppet在當前伺服器上建立一個名叫liuhaoran的使用者,我們可以配置一個清單,清單的名稱為test.pp ,注意,清單要以”.pp”為檔案字尾名, test.pp內容如下。

user{'liuhaoran':
  name => liuhaoran,
  ensure => present,
}

上圖內容中,我們只定義了一個資源,這個資源的型別是user ,這個user型別的資源的標題是’liuhaoran’,我們通過name關鍵字指定資源的名稱,這個資源的名稱也是’liuhaoran’,我們通過ensure關鍵字,可以設定資源的”目標狀態”,present直譯過來的意思是”出席”,但是當我們在user型別的資源中設定ensure的值為present時,表示建立使用者,也就是說,我們的目標是確保liuhaoran使用者存在,如果此使用者存在,將不再執行對應操作,如果對應的使用者不存在,那麼,我們將會建立這個使用者,確保這個使用者能夠”出席”,其實不管是name關鍵字還是ensure關鍵字,這些關鍵字在puppet中都被稱為資源的”屬性”,這個資源只是用於示例,我們在後面的文章中會單獨對資源的結構進行總結,不用怕,我們繼續聊。

上面的資源是不是很容易理解,好了,清單已經準備好了,現在我們準備執行這個清單,但是需要注意,在執行清單之前,我們先確定一下,當前系統中是否存在liuhaoran使用者。

可以看到,當前系統中並不存在liuhaoran使用者,那麼,我們準備執行一遍這個清單,看看效果

因為我們現在在單機模式下使用puppet,所以,我們使用puppet apply命令執行對應清單,還記得我們之前提到過的noop選項嗎,我們可以通過noop選項模擬執行,也就是說,並不是真正的按照清單中的配置操作,而是按照清單中的配置,模擬執行一遍,示例如下。

puppet apply --verbose --noop test.pp

可以看到,我們執行puppet命令時添加了–verbose選項,表示輸出詳細資訊,使用了–noop選項,表示模擬執行、測試執行。

從測試執行的返回資訊中,可以看到,當我們執行puppet apply命令以後,第一步就是將對應的test.pp這個清單編譯成catalog,

之前已經說過,清單不能直接執行,需要先編譯成catalog,這裡也驗證了我們的理論。

測試資訊中的綠色字型是一條應用配置的版本號,我們不用在意它。

同時返回資訊中顯示,我們想要操作的資源型別為user,user的名字是liuhaoran, liuhaoran這個使用者的當前狀態為”absent”,absent直譯過來的意思是缺席,也就是說,當前伺服器上並不存在liuhaoran這個使用者, should be present表示這個資源的最終狀態應該是present,表示這個使用者應該存在,(noop)表示我們添加了–noop選項,所以puppet並沒有真正的建立使用者,那麼我們來驗證一下,看看liuhaoran使用者到底有沒有被建立。

可以看到,liuhaoran使用者的確沒有被建立,那麼,這次我們在執行puppet命令時不新增–noop選項,也就是說不進行測試執行,而是真正的執行,看看liuhaoran使用者會不會被建立。

puppet apply --verbose test.pp

從上圖中,可以發現,puppet已經按照test.pp清單中的配置,正確的建立了一個名為liuhaoran的使用者了。

好了,我們已經入門了。