1、檢視master的base路徑,在對應的路徑建立_modules資料夾,存放.py的模組
[root@v72 _modules]# cat /etc/salt/master | grep file_roots -a 5
--file_roots:
base:
- /srv/salt
建立目錄:
mkdir -p /srv/salt/_modules
2、在/srv/salt/_modules目錄下編寫python**
[root@v72 _modules]# pwd
/srv/salt/_modules
[root@v72 _modules]# cat infos.py
#!/usr/bin/env python
#encoding: utf-8
from subprocess import popen, pipe
import os,sys
import time
def getipaddr():
p = popen(['hostname','-i'], stdout = pipe)
ip=p.stdout.read()
return ip
def gethostname():
p = popen(['hostname'], stdout = pipe)
hostname=p.stdout.read()
return hostname
def getdiskinfo():
p = popen(['df','-h'], stdout = pipe)
disks=p.stdout.read()
return disks
def getmemoryinfo():
p = popen(['free','-m'], stdout = pipe)
memorys=p.stdout.read()
return memorys
def getbiosinfo():
p = popen(['dmidecode','-t','bios'], stdout = pipe)
bios=p.stdout.read()
return bios
def getcpu():
p = popen(['sar','-u','1','3'], stdout = pipe)
time.sleep(3)
cpus=p.stdout.read()
return cpus
3、同步模組,執行驗證
[root@v72 _modules]# salt '*' saltutil.sync_modules
v72:
- modules.infos
v73:
- modules.infos
執行,驗證
載入哪一部份的資訊,只需要在saltstack上面呼叫對應的方法就可以了
將來如果需要獲取其它的資訊,只需要在自定義的模組新增對應的方法,同步,再執行即可
[root@v72 _modules]# cat infos.py | grep getos -a 5
def getos():
status,output=commands.getstatusoutput("uname -a")
return output
注意上面的方法也和上面一樣可以獲取linux命令的輸出,但需要先導入模組
saltstack編寫自定義模組
salt的底層通訊是通過zeromq完成的,採用了zeromq的訂閱發布模式 pub和sub 如下圖所示。簡單來講,pub sub模式類似於廣播電台,在訂閱發布模式中pub將訊息傳送到匯流排,所有的sub收到來自匯流排的訊息後,根據自己的訂閱條件來接收特定的訊息。對應到salt中就是master將事...
python from import 自定義模組
from douban250.items import douban250item python import 自定義模組 1 主程式與模組程式在同一目錄下 如下面程式結構 src mod1.py test1.py 若在程式test1.py中匯入模組mod1,則直接使用 import mod1或fr...
NC57新增自定義按鈕組步驟自定義查詢模板
第一步 按鈕介面 自定義按鈕常量 public inte ce pubuserdefbutton return btnvo public buttonvo getbuttonvo btnvo.setbusinessstatus new int return btnvo 第三步 在clientcont...