天天看點

saltstack學習四:自定義modules

根據官網的說法,自定義modules的檔案目錄應該是放在/srv/salt/_modules下面,同步到minion的方法有三個:

<a href="http://docs.saltstack.cn/ref/modules/all/salt.modules.state.html#salt.modules.state.highstate" target="_blank">state.highstate</a>

<a href="http://docs.saltstack.cn/ref/modules/all/salt.modules.saltutil.html#salt.modules.saltutil.sync_modules" target="_blank">saltutil.sync_modules</a>

<a href="http://docs.saltstack.cn/ref/modules/all/salt.modules.saltutil.html#salt.modules.saltutil.sync_all" target="_blank">saltutil.sync_all</a>

好吧,先來寫個簡單的modules試試看,就傳回一個目前時間吧:

/srv/salt/_modules/test.py

1

2

3

4

<code>#!/usr/bin/python</code>

<code>import</code> <code>time</code>

<code>def </code><code>date</code><code>():</code>

<code>    </code><code>return</code> <code>time</code><code>.</code><code>time</code><code>()</code>

接下來推送到minion:

<code>salt </code><code>'*'</code> <code>saltutil.sync_modules</code>

推送完之後運作一下這個modules,方法是:檔案名.函數名

<a href="http://s3.51cto.com/wyfs02/M01/24/38/wKiom1NM_vSw1LsQAACbNwcIurw503.jpg" target="_blank"></a>

恩,感覺還可以,接下來看一下modules如何使用grains和pillar的資料:

5

6

7

8

<code>def</code> <code>date():</code>

<code>    </code><code>return</code> <code>time.time()</code>

<code>def</code> <code>get_osfinger():</code>

<code>    </code><code>return</code> <code>__grains__[</code><code>'osfinger'</code><code>]</code>

<code>def</code> <code>get_cachedir():</code>

<code>    </code><code>return</code> <code>__pillar__[</code><code>'master'</code><code>][</code><code>'cachedir'</code><code>]</code>

__grains__ 和 __pillar__ 儲存了grains和pillar的資料,我們可以在module中這樣來讀取,推送到minion之後看看結果:

<a href="http://s3.51cto.com/wyfs02/M02/24/41/wKiom1NN7izCu7qtAAD6RcMUBb8352.jpg" target="_blank"></a>

然後官網還說到一個功能就是調用其它的子產品:

9

10

<code>def</code> <code>foo():</code>

<code>    </code><code>return</code> <code>__salt__[</code><code>'cmd.run'</code><code>](</code><code>'df'</code><code>)</code>

所有的子產品都包含在__salt__字典裡面,我試試執行cmd.run "df",看看結果:

<a href="http://s3.51cto.com/wyfs02/M02/24/43/wKiom1NN_LbQMsjrAAEcsJUXFVg730.jpg" target="_blank"></a>

這樣感覺就可以把一些日常經需要做的工作寫成modules,雖然現在還不知道寫些什麼好。。囧。。。

本文轉自運維筆記部落格51CTO部落格,原文連結http://blog.51cto.com/lihuipeng/1396279如需轉載請自行聯系原作者

lihuipeng