使用saltstack自定義模組獲取伺服器的資訊

2021-09-11 06:09:49 字數 1896 閱讀 4954

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...