天天看點

Puppet 資源公有屬性的其他描述方式(三十)

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 =&gt; present,</code>

<code>    </code><code>provider =&gt; </code><code>'yum'</code><code>,</code>

<code>}</code>

<code>service {</code><code>"httpd"</code><code>:</code>

<code>    </code><code>ensure =&gt; running,</code>

<code>    </code><code>enable</code> <code>=&gt; </code><code>true</code><code>,</code>

<code>Package[</code><code>"httpd"</code><code>] -&gt; 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>

示例: "~&gt;"用法

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 =&gt; </code><code>file</code><code>,</code>

<code>Package[</code><code>"httpd"</code><code>] -&gt; File [</code><code>'/etc/httpd/conf/httpd.conf'</code><code>] ~&gt; 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 =&gt; </code><code>'yum'</code><code>,</code>

<code>-&gt;</code>

<code>enable</code> <code>=&gt; </code><code>true</code><code>,</code>

第二種:

<code>} -&gt;</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>

注意:大部分都是第二種寫法,"-&gt;"或"~&gt;"跟在花括号的後面,但是個人習慣用第一種反正更新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 =&gt; [ 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

繼續閱讀