根據官網的說法,自定義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