57. Python saltstack 二次開發(2)
阿新 • • 發佈:2018-02-05
http協議 class 方式 clas 調用 官網 創建 分享 tex 回顧上一節:
grains 和 pillar 都是定義他們的屬性的
grains 定義在minion端(定義完必須重啟minion,才能生效)
pillar 定義在master端(無需重啟即可生效)
saltstack的api
Salt-api有兩種方式:
第一種:是函數的形式,有人家定義好的函數,我們可以直接調用,直接寫python代碼調用函數或者類就可以了。
第二種:形式是salt-api有封裝好的http協議的,我們需要啟動一個服務端。
登錄官網查看文檔:
文檔內容,如下:
安裝salt-api:
yum install –y salt-api
1.加載master的配置文件
import salt.config master_opts = salt.config.client_config('/etc/salt/master') print('master_opts')
master端,如果想查看配置文件的參數屬性:
2. 加載minion的配置文件
import salt.config minion_opts = salt.config.minion_config('/etc/salt/minion') print ('minion_opts')
minion端,想看配置文件內的參數屬性:
3. 在master上執行各種模塊:
>>> import salt.client >>> local = salt.client.LocalClient('/etc/salt/minion') >>> local.cmd('*', "test.ping")
返回:
{'192.168.48.129': True}
執行命令:
>> local.cmd('*', "cmd.run", "w")
【返回的是一個字典形式,很容易後期處理數據用】
{'192.168.48.129': ' 12:17:38 up 5:58, 1 user, load average: 0.00, 0.01, 0.05\nUSER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT\nroot pts/0 192.168.48.1 11:14 2:50 0.89s 0.89s python'}
如果一次要執行多個模塊:
一種方式:
>>> local.cmd('*', ['test.ping', 'cmd.run'], [[], ['whoami']])
結果:
{'192.168.48.129': {'test.ping': True, 'cmd.run': 'root'}}
【test.ping 對應 [](空列表),cmd.run 對應 whoami 命令】
另一種方式:(不推薦這樣用,還不如調兩次,這樣邏輯性不好)
>>> local.cmd('*', ['test.ping', 'cmd.run'], [[], ['w; df -h']])
自定義的模塊:
模塊目錄必須創建:
mkdir -p /srv/salt/_modules cd /srv/salt/_modules
創建 jd.py 文件:
vim jd.py
#!/usr/bin/python #coding:utf-8 def hello(name): return {"name": name}
寫完所有module要記得同步一下:
salt '*' saltutil.sync_all #同步所有
或者
salt '*' saltutil.sync_modules #只同步modules
執行命令獲取結果:
# salt '*' jd.hello ajing
結果輸出,如圖:
python中這樣獲取:
57. Python saltstack 二次開發(2)