當咱們引用一個資源時,須要大寫資源類型的首字母,例如File[sshdconfig]。當看到一個大寫的資源類型,須要明白那實際上就是一個資源引用。小寫字母是用來定義的。資源只能被定義一次,重複定義相同的資源會致使錯誤。ssh
大寫 : 引用資源學習 小寫 : 定義資源ui
|
基本格式: Type ["title",…, "title"]this
注:Type:表示資源的類型,且第一個字母必須大寫spa
title:表示該資源的title,多個title,可用逗號分隔,必須存在。server
經常使用於require => Type ["title",…, "title"]ip
表示require以後的引用,必須先存在或正確執行ci
#定義 file { 'sshdconfig': path => $operatingsystem ? { solaris => '/usr/local/etc/ssh/sshd_config', default => '/etc/ssh/sshd_config', }, owner => 'root', group => 'root', mode => '0644', } service { 'sshd': #引用 subscribe => File['sshdconfig'], } |
爲某類資源指定一個默認的參數。使用沒有標題的大寫資源首字母方式。資源
格式:
it
Type { 屬性 => 值,…, 屬性 => 值;}
注:Type:表示資源的類型,且第一個字母必須大寫,不須要title.
例如,爲全部的執行命令設置默認的path參數:
vi /etc/puppet/manifests/site.pp Exec { path => '/usr/bin:/bin:/usr/sbin:/sbin' } exec { 'echo this works'} |
第一行代碼爲exec資源提供一個默認的path參數。exec資源須要一個完整的限定路徑或者可以經過path參數找到具體的可執行文件。資源定義時如有必要能夠覆蓋path的默認設置。這種狀況下咱們能夠爲全部的配置指定一個默認path參數,特殊狀況時覆蓋它就能夠了。
默認值不是全局的,它只在當前範圍和當前範圍下面有效。若是你想爲全部的配置設置默認值,惟一選擇是在任意類的外面定義它們,或在/etc/puppet/manifests/site.pp中定義。
puppet 資源之間簡單依賴關係,主要是有下面的三個參數:
before:在某個資源以前執行,before => 要引用的資源(首字母大寫)
after: 在某個資源以後執行,after => 要引用的資源(首字母大寫)
require: 某個資源必須存在或者正確執行後,才執行。經常使用 require => 要引用的資源(首字母大寫)
|
before、after、和require,都可用於各個資源中。
爲了便於理解,下面就給你們看個代碼示例:
代碼示例:
file {"/etc/ssh/sshd_config": ..... require => Package["openssh-server"], #引用package {"openssh-server": …} } package { 「openssh-server」: …… before => File["/etc/ssh/sshd_config"], } |
上面例子咱們能夠知道:/etc/ssh/sshd_config必須在openssh-server這個軟件包安裝後,纔會生成。
after和before相反,就不舉例說明了。那你們會有個問題,那/etc/ssh/sshd_config有改動的時候,那要怎麼辦呢,接下來就爲你們介紹,puppet資源之間觸發更新動做。
class admin::ntp { package { "ntp": ensure => installed, require => File["/etc/ntp.conf"], } service { "ntp": ensure => running, require => Package["ntp"], } file { "/etc/ntp.conf": source => "puppet:///modules/admin/ntp.conf", notify => Service["ntp"], require => Package["ntp"], } } |
Package["ntp"] -> File["/etc/ntp.conf"] ~> Service["ntp"]
puppet資源之間觸發更新主要是由下面二個參數。在執行Services,Exec資源中很是有用。
notify:用來通知某個資源進行更新。
subscribe:資源有更新時,通知另外一個資源執行相應的動做。
|
其實這兩個效果參數效果是同樣的。接下來看下代碼示例,更好的理解上面的兩個參數。
file {"/etc/ssh/sshd_config": ..... notify => Service[sshd], } service {"sshd": ...... subscribe => File["/etc/ssh/sshd_config"], } |
上面的例子,咱們能夠看到,當/etc/ssh/sshd_config文件發生更新時,就會通知sshd服務,進行reload.
至此,puppet的資源關係就結束了,接下來的是tag標籤的學習,請聽下回分解!!!