puppet(2)-资源介绍
生活随笔
收集整理的這篇文章主要介紹了
puppet(2)-资源介绍
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
puppet- 資源介紹:
類型、屬性與狀態(tài)同實現(xiàn)方式分離、僅指定目標狀態(tài)
type {'title':attribute => value,...}查看支持的資源類型:
puppet describe -lpuppet describe -s TYPEpuppet describe TYPE定義資源的要點:
1、同一種類型中,資源名稱必須惟一;2、資源名稱是否區(qū)分大小與取決于OS;獨特屬性:
package {'nginx':ensure => present,name => nginx,}命名變量:namevar,可省略,默認為title- 常用類型:package, user, group, file, service, exec, cron, notify
group的常用屬性:
ensure: present, absentname: 組名gid: GIDsystem: 是否為系統(tǒng)組;true, yes; false, nouser的常用屬性:
ensure: present, absentname: 用戶名uid: UIDsystem: 是否為系統(tǒng)用戶;gid: 基本組;groups: 附加組;home: 家目錄;password: 密碼;shell: 默認shell;comment: 注釋信息;expiry: 賬號過期期限 不常用file的常用屬性:
管理文件從屬關系、權限及其內(nèi)容。
管理的類型有:
普通文件目錄符號連接等(通過ensure屬性指定)如果管理普通文件,文件內(nèi)容可以:
直接用content屬性直接給出,或者用source屬性根據(jù)遠程服務器下載生成如果是目錄:resource屬性+recurse屬性可以遞歸下載目錄
核心屬性:
exec的常用屬性:
運行一外部命令,命令應該具有“冪等性” (可以多次運行,不會損壞結(jié)果)
核心屬性
command: 要執(zhí)行的命令,通常應該使用絕對路徑;creates:文件。 此屬性跟的文件不存在時才執(zhí)行命令。加入command 是創(chuàng)建 文件,那么執(zhí)行的條件是這個文件不存在onlyif:給定測試命令。僅在此命令執(zhí)行成功即執(zhí)行狀態(tài)碼返回為0,才執(zhí)行command命令unless:給定測試命令。 和onlyif相反,僅當測試命令執(zhí)行狀態(tài)碼不為0時,才執(zhí)行command命令cwd: 目錄, 在哪個目錄下運行命令path:為非絕對路徑的命令指定搜索路徑; 類似 環(huán)境變量 [path1,path2],如果不定義此屬性,則必須給出命令的絕對路徑。user:group:refresh: 跟命令,默認為收到依賴的資源的事件時會重新執(zhí)行此命令;但此屬性可以修改此默認行為;(定義命令接收到刷新通知時怎樣操作,跟的也是命令,默認命令在執(zhí)行一次,可以自定義,加入此命令為創(chuàng)建目錄,當接收到刷新通知時,你可以先刪除在創(chuàng)建。簡單點就時 刷新時執(zhí)行的命令。)refreshonly: 此資源不會自動被執(zhí)行,除非被依賴的資源發(fā)生了改變;(僅在收到refresh通知時,才運行此資源,布爾型值)returns: 指定狀態(tài)返回值;指定期望得到的返回值,當返回非此值時表示命令執(zhí)行失敗,默認為0, 一般不需要定義tries: 嘗試執(zhí)行次數(shù) ,默認一次 根據(jù)returns 判斷是否成功timeout: 超時時長notify 最簡單的資源,就是顯示信息
核心屬性message 要發(fā)送的消息的內(nèi)容,還是name/namevalue notify {'title':message => 'something here',}cron的常用屬性: 定義任務計劃/管理任務計劃
ensure: present, absentcommand: 周期性執(zhí)行的命令;environment: 定義PATH環(huán)境變量;hour:minute:month:monthday:weekday:package的常用屬性:
管理程序包: 卸載,安裝,升級
范例:
package{'mysql':ensure => installed,provider => msi,source => "D:\mysql\mysql-5.5.45.msi",install_options => {'INSTALLDIR' => 'C:\mysql'},}service 管理服務的
service的常用屬性:binary: 指定執(zhí)行文件ensure:true, running 啟動false, stopped 停止enable: 是否開機自動啟動name:服務名稱path: 服務腳本路徑 我們知道,在linux系統(tǒng)下有兩種啟動方式, 一種是直接調(diào)用二進制執(zhí)行文件,另外一種就是用系統(tǒng)中的服務管理命令,比如centos6中的service。所以當你不指定binary文件時,這個path就是指centos系統(tǒng)中的service命令調(diào)用哪個執(zhí)行文件。我們知道一般service管理的服務命令都在/etc/init.d/目錄下。如 /etc/init.d/httpd 文件。另外還有當用service進行管理服務時會有restart,status,start ,stop等選項。但是 puppet 并不知道你有沒有這些命令所以才會有 hasrestart ,hasstop,hasstart, hasstatus屬性,都是布爾值型。當你把這些值設置為false時,服務又有需求接受refresh 刷新后進行restart,那你怎么辦呢。所以又需要我們自己在資源中定義start,stop, restart, status等屬性,屬性值為命令hasrestart: 是否支持restart參數(shù)hasstatus: 是否支持status參數(shù)pattern: 指明用于搜索此服務相關進程的模式,當腳本不支持restart/status時,用于確定服務是否處于運行狀態(tài)。如果你的服務不支持stop,那就需要kill掉進程,那kill 的時候我們知道有的服務啟動的進程有好幾個,就需要匹配需要kill 掉的每個進程的,這個應該也是用patternstart:stop:restart: reloadstatus:資源的特殊屬性:
元參數(shù):以下四個參數(shù)都以其他定義過的的資源作為屬性值,但是寫法必須時Type['title'] 資源類型首字母要大寫用于定義資源間的依賴關系
before => Type['title']require => Type['title']用于定義通知通知和訂閱的
notifysubscribebefore/require使用舉例
before代表 當前資源要在某個資源執(zhí)行之前執(zhí)行require 當前資源執(zhí)行需要某一個資源已經(jīng)執(zhí)行了還有一種鏈式表示的方法,用 ->表示范例
方法一 before:
group{'linux':gid => 3000,ensure => present,before => User['suse'],}user{'suse':uid => 3000,gid => 3000,shell => '/bin/shell',home => '/home/suse',ensure => present,}方法二 require:
group{'linux':gid => 3000,ensure => present,}user{'suse':uid => 3000,gid => 3000,shell => '/bin/shell',home => '/home/suse',ensure => present,require => Group['linux'],}方法三 -> :
group{'linux':gid => 3000,ensure => present,} ->user{'suse':uid => 3000,gid => 3000,shell => '/bin/shell',home => '/home/suse',ensure => present,}
notify/subscribe 通知/訂閱舉例
這個用服務舉例,我們知道nginx服務,當配置文件發(fā)生變化時,服務經(jīng)常需要重新加載配置文件或者重啟。puppet agent每隔一段時間去獲取下catelog有無變化,有變化就會將file資源更新,這時service資源就需要執(zhí)行restart 操作,那么我們首先要知道 puppet 里service資源什么時間會調(diào)用restart ,當資源接收到refresh時就會調(diào)用restart,那么什么時候會觸發(fā)refresh呢?就是當前資源接收到通知 或者 當前資源訂閱的主題有新信息了。轉(zhuǎn)載于:https://www.cnblogs.com/zhming26/p/8629946.html
總結(jié)
以上是生活随笔為你收集整理的puppet(2)-资源介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ES6中object对象属性
- 下一篇: POJ2398【判断点在直线哪一侧+二分