天天看點

Puppet node節點的特性(十二)

前言:

    生産機器很多通常會建立nodes.pp檔案和site.pp檔案平級,存放于/etc/puppet/manifests/nodes.pp檔案,這種方法比較常用.當然也有其他辦法直接寫入site.pp檔案.

    nodes.pp檔案主機比對,支援正規表達式和繼承.

    //:正則比對

    "":精确比對

    inherits:繼承

執行個體:

先正則比對然後在精确比對.

1

2

3

4

5

6

7

8

9

10

11

12

13

<code>node </code><code>/sh-</code><code>(proxy|web)\d+/ {</code>

<code>  </code><code>case</code> <code>$::</code><code>hostname</code> <code>{</code>

<code>    </code><code>"sh-proxy2"</code><code>: {</code>

<code>         </code><code>include apache</code>

<code>         </code><code>user {</code><code>"test1"</code><code>:</code>

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

<code>            </code><code>}</code>

<code>      </code><code>}</code>

<code>     </code><code>"sh-web1"</code><code>: {</code>

<code>        </code><code>include nginx::nginxconf</code>

<code>         </code><code>} </code>

<code>    </code><code>}</code>

<code>}</code>

比如sh-proxy不止sh-proxy2一台,有50台也可以比對操作:

<code>    </code><code>/sh-proxy</code><code>\d+/: {        </code><code>#正則比對</code>

<code>            </code><code>include nginx::nginxconf</code>

測試agent端更新:

<code>[root@sh-proxy2 puppet]</code><code># puppet agent -t</code>

<code>Info: Retrieving pluginfacts</code>

<code>Info: Retrieving plugin</code>

<code>Info: Caching catalog </code><code>for</code> <code>sh-proxy2.localdomain</code>

<code>Info: Applying configuration version </code><code>'1505706252'</code>

<code>Notice: </code><code>/Stage</code><code>[main]</code><code>/Apache/Package</code><code>[httpd]</code><code>/ensure</code><code>: created</code>

<code>Notice: Finished catalog run </code><code>in</code> <code>8.69 seconds</code>

node節點繼承(inherits)

1、建立一個admin子產品,做selinux替換關閉.

/modules/admin/manifests/init.pp檔案内容:

<code>class admin {</code>

<code>    </code><code>exec</code> <code>{</code><code>"selinux"</code><code>:</code>

<code>    </code><code>command</code> <code>=&gt; </code><code>"sed -i '/^SELINUX=/s/=.*/=disabled/g' /etc/sysconfig/selinux"</code><code>,</code>

<code>    </code><code>path =&gt; [</code><code>"/bin/"</code><code>,</code><code>"/sbin/"</code><code>,</code><code>"/usr/bin/"</code><code>,</code><code>"/usr/sbin/"</code><code>],</code>

<code>    </code><code>user =&gt; root,</code>

<code>    </code><code>group =&gt; root,</code>

<a href="https://s1.51cto.com/wyfs02/M02/A5/A0/wKioL1nAw8WyAzPEAAFb6Nin5HU496.png" target="_blank"></a>

注意:嘗試定義類名'base'報錯,現象:svn無法送出,但卻可以更新,update後擷取到master主機ip位址目錄等資訊,不确實是否和系統内置變量沖突.

<code>manifests</code><code>/nodes</code><code>.pp檔案内容.</code>

<code>    </code><code>node base {</code>

<code>        </code><code>include admin</code>

<code>node </code><code>/sh-</code><code>(proxy|web)\d+/  inherits base {</code>

<code>    </code><code>/sh-proxy</code><code>\d+/: {</code>

<a href="https://s1.51cto.com/wyfs02/M02/A5/A0/wKioL1nAw_vCspdIAAHBv-9Z3Dk369.png" target="_blank"></a>

注意:node節點名不能和子產品名沖突,嘗試定義為node admin,送出無報錯,但是agent端無更新無修改無提示,修改為base以後agent端内容更新.

本文轉自青衫解衣 51CTO部落格,原文連結:http://blog.51cto.com/215687833/1966829

繼續閱讀