天天看點

saltstack一些常用子產品和api調用方法

  研究可執行子產品的時候,發現很多自帶的子產品已經很完善,可以幫助我們完成日常工作了,這裡寫入自己的記錄操作:

1、使用salt.clien調用接口操作舉例:

1

2

3

4

5

<code>&gt;&gt;&gt; </code><code>import</code> <code>salt.client</code>

<code>&gt;&gt;&gt; client </code><code>=</code> <code>salt.client.LocalClient()</code>

<code>&gt;&gt;&gt; ret </code><code>=</code> <code>client.cmd(</code><code>'*'</code><code>,</code><code>'test.ping'</code><code>)</code>

<code>&gt;&gt;&gt; ret</code>

<code>{</code><code>'monitor'</code><code>: </code><code>True</code><code>}</code>

我們看到調用了LocalClient()這個函數之後,等于我們執行的指令 salt '*' test.ping.運用這個接口我們可以靈活的再調用子產品開發時候使用

2、status子產品

剛發現這個子產品,原來想做系統監控時候用Mine調用,現在發現這個子產品也是蠻适合的,可以監控,cpu、記憶體、硬碟、網絡,等一些我們日常資訊:可以檢視子產品源碼:/usr/lib/python2.6/site-packages/salt/modules/status.py。

源碼片段,下面是我們可以操作的函數。

6

7

8

9

10

11

12

13

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

<code>    </code><code>... ... ...</code>

<code>    </code><code>return</code> <code>{</code><code>'cpuinfo'</code><code>: cpuinfo(),</code>

<code>            </code><code>'cpustats'</code><code>: cpustats(),</code>

<code>            </code><code>'diskstats'</code><code>: diskstats(),</code>

<code>            </code><code>'diskusage'</code><code>: diskusage(),</code>

<code>            </code><code>'loadavg'</code><code>: loadavg(),</code>

<code>            </code><code>'meminfo'</code><code>: meminfo(),</code>

<code>            </code><code>'netdev'</code><code>: netdev(),</code>

<code>            </code><code>'netstats'</code><code>: netstats(),</code>

<code>            </code><code>'uptime'</code><code>: uptime(),</code>

<code>            </code><code>'vmstats'</code><code>: vmstats(),</code>

<code>            </code><code>'w'</code><code>: w()}</code>

<code></code>

使用方法:

<code>[root@mail python]</code><code># salt '*' status.uptime</code>

<code>monitor:</code>

<code>     </code><code>11</code><code>:</code><code>40</code><code>:</code><code>50</code> <code>up </code><code>23</code> <code>days, </code><code>23</code><code>:</code><code>24</code><code>,  </code><code>1</code> <code>user,  load average: </code><code>0.00</code><code>, </code><code>0.00</code><code>, </code><code>0.00</code>

api接口調用方法:

<code>&gt;&gt;&gt; client.cmd(</code><code>'*'</code><code>,</code><code>'status.uptime'</code><code>)</code>

<code>{</code><code>'monitor'</code><code>: </code><code>' 11:41:52 up 23 days, 23:25,  1 user,  load average: 0.00, 0.00, 0.00'</code><code>}</code>

3、system

<code>system子產品主要是用來做日常操作計算機維護記錄,源碼也在上面的位置下:</code>

<code>system.halt        </code><code>#停止正在運作的系統</code>

<code>system.init </code><code>3</code>      <code>#切換到字元界面,5是圖形界面</code>

<code>system.poweroff</code>

<code>system.reboot</code>

<code>system.shutdown</code>

<code>操作方法:不示範:</code>

<code>4、systemd</code>

<code>系統管理子產品,這個也是一個非常有用的功能,我們可以用來檢測我們的服務是否已經啟動,源碼自己檢視:</code>

<code> </code>

14

<code>service.available sshd            </code><code>#檢視服務是否可用</code>

<code>  </code><code>service.disable &lt;service name&gt;    </code><code>#設定開機啟動的服務</code>

<code>  </code><code>service.enable &lt;service name&gt;</code>

<code>  </code><code>service.disabled &lt;service name&gt;   </code><code>#檢視服務是不是開機啟動</code>

<code>  </code><code>service.enabled &lt;service name&gt;</code>

<code>  </code><code>service.get_disabled              </code><code>#傳回所有關閉的服務</code>

<code>  </code><code>service.get_enabled               </code><code>#傳回所有開啟的服務</code>

<code>  </code><code>service.get_all                   </code><code>#傳回所有服務</code>

<code>  </code><code>service.</code><code>reload</code> <code>&lt;service name&gt;     </code><code>#重新載入指定的服務</code>

<code>  </code><code>service.restart &lt;service name&gt;    </code><code>#重新開機服務</code>

<code>  </code><code>service.start &lt;service name&gt;</code>

<code>  </code><code>service.stop &lt;service name&gt;</code>

<code>  </code><code>service.status &lt;service name&gt;</code>

<code>  </code><code>service.force_reload &lt;service name&gt;  </code><code>#強制載入指定的服務</code>

<code>使用方法:</code>

<code>[root@mail python]</code><code># salt '*' service.available sshdmonitor:    True</code>

<code>api調用:</code>

<code>&gt;&gt;&gt; client.cmd(</code><code>'*'</code><code>,</code><code>'service.available'</code><code>,[</code><code>'sshd'</code><code>]){</code><code>'monitor'</code><code>: </code><code>True</code><code>}</code>

   總結:通過api接口的調用,我們就會發現生成很多我們想要的結果,因為是字典,我們可以很容易的對收到的資料進行操作。

本文轉自 小羅ge11 51CTO部落格,原文連結:http://blog.51cto.com/xiaoluoge/1615905,如需轉載請自行聯系原作者