對于puppet,玩過ansible的人對puppet來說都不陌生。puppet是一種Linux、Unix、windows平台的集中配置管理系統,使用自有的puppet描述語言,可管理配置檔案、使用者、cron任務、軟體包、系統服務等。puppet把這些系統實體稱之為資源,puppet的設計目标是簡化對這些資源的管理以及妥善處理資源間的依賴關系。
對于ansible來說puppet更為抽象了,且配置管理方面(playbook)更是puppet更為厲害(畢竟puppet時間這麼長了)。但是自我感覺自動化運維工具還是用得順手在第一,不順手啥事都幹不好,且puppet的學習要比ansible要難一點。是以子自行選擇吧!
puppet有兩種模式,單機和master/agent:單機就是自己跟自己玩了,在本機配置在本機實作操作。master/agent就是遠控其他主機了。
現在呢來說說puppet的單機基本用法,單機模式下的簡單的使用和配置。(先把單機模式下的操作玩熟練了,在去玩多台主機吧)
首先最簡單的檢視資源 : puppet describe -l #describe 描述 -l list 檢視資源清單
學會了如何檢視資源清單,這麼多資源怎麼使用呢,今天學幾個重要的常用的0.0
但是僅僅學會了檢視清單還是太嫩了,若需要用到file這個資源,怎麼知道他的用法呢。
puppet describe [資源名] 可以檢視某個資源的用法。知道用法了下面就就看看怎麼使用格式是什麼。
1.首先看第一個資源group。很簡單但的一個資源: #這裡開始使用本機執行指令了apply 後面跟上檔案名(注意,要.pp結尾最好)
關于組的指令這隻是一個簡單的建立,更多的用法可以用describe檢視。
檢視什麼呢,這個檔案内容:開頭group為資源名其他什麼符号啊括号啊都是固定格式,下面的name什麼的為參數,就group而言需要定義一個組,組号為多少組名為什麼這都需要參數定義,而開頭group隻是說明要定義組!
若隻想檢視某個資源有哪些參數,并不想檢視具體用法可以加上 -m原參數(大部分用不到,但還是有地方能用到的) -s短格式檢視
#Parameters下面都是可以定義的參數,先檢視參數在檢視用法,一般流程都是這樣的。這裡說明一點name一般若不定義就繼承group{'meng':} 檔案内這裡的紅色内容。(特殊參數)
2.user :使用者
#指定使用者名 name uid 指定shell類型 是否建立家目錄managehome等操作可以檢視幫助,比如截取一段關于user參數的使用說明:
3.package 關于程式包 #在linux平台最多的就是操作管理服務了下面就介紹關于包和服務的指令。
上面ensure為是否安裝latest為安裝最新版 present為安裝 absent為解除安裝
provider定義安裝方式:為yum,因為平台的不同可能指令不同。這裡可以加上name => nginx ,不加因為nginx包名從上面繼承了。
source:程式包來源
在說明這個資源之前想要先表示表示,也就是說明一下依賴問題。下面即将說明管理服務,安裝過nginx後,怎麼通過puppet來啟動重新開機關閉呢。想要重新開機關閉但是還沒裝服務怎麼辦呢,這裡就要執行兩個資源動作,且還要定義先後。 大緻是:安裝 --> 啟動
4.service 服務
繼續定義service且參數ensure為running在繼續puppet apply pak.pp執行一遍可以檢視nginx端口已經開啟。不知道你們觀察看了沒我在兩個資源中間加了一個“->",這是什麼意思呢,意思為後面的資源要依賴于前面的資源 ,前面一定要先于後面執行。
三種依賴解決:
1.簡單的 ->

#這隻是簡單的加個符号記住就行了,好使。
2.Package[‘redis’] -> File []->Service[]
#在所有資源下面做一個排序
3.在service[‘redis’: #在内部定義 require => Package['nginx']
在資源内定義兩種方法,任意一個就行,上面一行我注釋了。before表示在某資源之前執行,require表示依賴某資源也就是在什麼自願執行過後在執行。這表示三種解決以來的方法,還是比較容易了解的。
好了繼續說回service,service可以控制服務的啟動重新開機等功能,配合上面的安裝來批量管理服務,進行安裝和啟動,可以設定開啟自動啟動。
5.file 檔案
檔案有很多屬性比如建立檔案,在linux中目錄也是檔案的一種,是以建立檔案在linux中有三種情況,建立檔案,目錄,連接配接。
這裡ensure可以指定建立檔案或者目錄
#這裡看到檔案内容為nginx配置檔案内容 file後面指定檔案名 ensure為file(檔案)類型,指定源檔案這樣形成一套複制的代碼。
也可以輸入内容到檔案,不指定源檔案。
建立目錄,且複制其他目錄内的内容到建立的目錄下。
#注意,若源是個檔案則會失敗,不能把檔案複制成目錄。
#連結也需要指定源和目标名
6.exec 指令的執行
#這裡使用指令建立要指定指令的路徑還有判斷該目錄是否存在。
unless可以根據判斷是否為0,即輸出為true來決定資源定義是否要執行。上面則判斷id是否存在,存在不建立,不存在建立。
其他還有許多的資源,這裡就不一一細說了,這個東西就是這樣使用的多了自然就會了。更多的資源還需要多自己嘗試一下才知道怎麼使用。