Puppet 資源公有屬性的其他描述方式
puppet的資源公有屬性中還可以通過"->"和"~>"兩種特殊符号來描述資源與資源之間的關系.
->:用于表示資源與資源之間的先後關系,等同于before和require兩個資源公有屬性.
~>:用于表示資源之間的通知,等同于notify和subscribe練個資源公有屬性.
示例: "->"用法
安裝httpd并運作httpd服務的puppet代碼如下:
1
2
3
4
5
6
7
8
9
10
<code>[root@sh-web1 ~]</code><code># cat httpd2.pp </code>
<code>package {</code><code>"httpd"</code><code>:</code>
<code> </code><code>ensure => present,</code>
<code> </code><code>provider => </code><code>'yum'</code><code>,</code>
<code>}</code>
<code>service {</code><code>"httpd"</code><code>:</code>
<code> </code><code>ensure => running,</code>
<code> </code><code>enable</code> <code>=> </code><code>true</code><code>,</code>
<code>Package[</code><code>"httpd"</code><code>] -> Service[</code><code>"httpd"</code><code>]</code>
運作結果:
<code>[root@sh-web1 ~]</code><code># puppet apply httpd2.pp </code>
<code>Notice: Compiled catalog </code><code>for</code> <code>sh-web1.localdomain </code><code>in</code> <code>environment production </code><code>in</code> <code>0.06 seconds</code>
<code>Notice: </code><code>/Stage</code><code>[main]</code><code>/Main/Package</code><code>[httpd]</code><code>/ensure</code><code>: created</code>
<code>Notice: </code><code>/Stage</code><code>[main]</code><code>/Main/Service</code><code>[httpd]</code><code>/ensure</code><code>: ensure changed </code><code>'stopped'</code> <code>to </code><code>'running'</code>
<code>Notice: Finished catalog run </code><code>in</code> <code>3.02 seconds</code>
<code>[root@sh-web1 ~]</code><code># /etc/init.d/httpd status</code>
<code>httpd (pid 81254) is running...</code>
示例: "~>"用法
11
12
13
<code>[root@sh-web1 ~]</code><code># cat httpd.pp </code>
<code>file</code> <code>{</code><code>'/etc/httpd/conf/httpd.conf'</code><code>:</code>
<code> </code><code>ensure => </code><code>file</code><code>,</code>
<code>Package[</code><code>"httpd"</code><code>] -> File [</code><code>'/etc/httpd/conf/httpd.conf'</code><code>] ~> Service[</code><code>"httpd"</code><code>]</code>
<code>[root@sh-web1 ~]</code><code># puppet apply httpd.pp </code>
<code>Notice: Compiled catalog </code><code>for</code> <code>sh-web1.localdomain </code><code>in</code> <code>environment production </code><code>in</code> <code>0.07 seconds</code>
<code>Notice: Finished catalog run </code><code>in</code> <code>3.25 seconds</code>
<code>httpd (pid 81493) is running...</code>
生産上并不會像上面那樣去寫,一個資源可能很大,篇幅很長.
如下兩種寫法:
第一種:
<code>provider => </code><code>'yum'</code><code>,</code>
<code>-></code>
<code>enable</code> <code>=> </code><code>true</code><code>,</code>
第二種:
<code>} -></code>
<code>Notice: Compiled catalog </code><code>for</code> <code>sh-web1.localdomain </code><code>in</code> <code>environment production </code><code>in</code> <code>0.04 seconds</code>
<code>Notice: Finished catalog run </code><code>in</code> <code>2.28 seconds</code>
注意:大部分都是第二種寫法,"->"或"~>"跟在花括号的後面,但是個人習慣用第一種反正更新puppet不報錯也能得到想要結果就ok.
audit審計
audit資源公有屬性主要用于資源屬性的審計,當某資源狀态變化時,它可以将變化的内容抓夾到系統日志中.
puppet代碼如下:
<code>[root@sh-web1 ~]</code><code># cat file.pp </code>
<code>file</code> <code>{</code><code>"/etc/password"</code><code>:</code>
<code> </code><code>audit => [ owner,mode ],</code>
運作過程,會看到改變通知.
<code>[root@sh-web1 ~]</code><code># puppet apply file.pp </code>
<code>Notice: </code><code>/Stage</code><code>[main]</code><code>/Main/File</code><code>[</code><code>/etc/password</code><code>]</code><code>/owner</code><code>: audit change: newly-recorded value absent</code>
<code>Notice: </code><code>/Stage</code><code>[main]</code><code>/Main/File</code><code>[</code><code>/etc/password</code><code>]</code><code>/mode</code><code>: audit change: newly-recorded value absent</code>
<code>Notice: Finished catalog run </code><code>in</code> <code>0.05 seconds</code>
本文轉自青衫解衣 51CTO部落格,原文連結:http://blog.51cto.com/215687833/1978109