saltstack的grains使用以及cmd.run.md(四)

紫翼龍王夜發表於2015-03-12

grains.items主要用來收集minion端的資訊,方便進行資訊採集,後續的piller使用,根據硬體資訊自動匹配配置檔案等。

基本用法

grains.ls

salt '*' grains.ls 顯示所有minion的item 

grains.items

salt '*' grains.items 顯示所有minion的item值 

grains.item

salt '*' grains.item os 顯示os的相關資訊。如下 :
root@salt ~ # salt 'sa10-003' grains.item os
sa10-003:
  os: RedHat 

如果想同時獲取多個item,可以在後面接空格後,直接相關item,如下:

root@salt ~ # salt 'sa10-003' grains.item os osrelease oscodename
sa10-003:
  os: RedHat
  oscodename: Tikanga
  osrelease: 5.8 

自定義grains: 首先,現在salt的根目錄下(/srv/salt)建一個目錄_grains

mkdir /srv/salt/_grains
cd /srv/salt/_grains 

假設我要取minion端記憶體的資訊 事例如下: vim mem.py

# -*- coding: utf-8 -*-

'''
Module for squid disk information by python
'''
import commands
import os

def cache():
    '''
    Return the memory usage information for volumes mounted on this minion
    '''
    grains={}
    m = commands.getoutput("free -g|awk '$0~/Mem/ {print$2+1}'")
    grains['mem_test']=int(m)

    return grains 

同步到minion端

root@salt _grains # salt 'sa10-003' saltutil.sync_all 
sa10-003:
    ----------
    grains:
        - grains.mem #已經同步過來了
    modules:
    outputters:
    renderers:
    returners:
    states: 

如果需要更改模組,更改完成後,可以使用下面命令過載:

salt sa10-003 sys.reload_modules 

驗證下之前的自定義grains:

root@salt _grains # salt sa10-003 grains.item mem_test
sa10-003:
  mem_test: 2 

sa10-003的記憶體資訊:

[root@sa10-003 salt]# free -m
             total       used       free     shared    buffers     cached
Mem:          2012       1766        246          0        286       1207
-/+ buffers/cache:        272       1739
Swap:            0          0          0 

在saltmaster上面自定義grains取到的資訊和本機是一致的


除了salt自帶和我們自定義的items可以取到系統資訊之外,我們還可以使用shell命令在來達到目的;當然,這需要salt的另外一個強大的命令,cmd.run 我要取sa10-003的記憶體資訊,可以使用下面的命令:

root@salt _grains # salt sa10-003 cmd.run 'free -m'
sa10-003:
                 total       used       free     shared    buffers     cached
    Mem:          2012       1769        242          0        286       1207
    -/+ buffers/cache:        275       1736
    Swap:            0          0          0 

cmd.run在master端進行操作,後面跟著的是系統相關的shell命令,這種方式,可以實現minion端幾乎所有的命令。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30129545/viewspace-1456753/,如需轉載,請註明出處,否則將追究法律責任。

相關文章