saltstack实例
实现功能:通过http调用模块和runner。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68import json
import requests
class SaltServer(object):
def __init__(self):
self.session = requests.session()
self.token = self.gettoken()
print(self.token)
def gettoken(self):
url = "http://192.168.145.129:8000/login"
header = {"Accept": "application/json"}
data = {
"username": "saltapi",
"password": "saltapi",
"eauth": "pam"
}
res = self.session.post(url=url, headers=header, data=data)
text = res.text
result = json.loads(text)
token = result.get("return")[0].get("token")
return token
def runmodules(self, minionid, func, args=None):
url = "http://192.168.145.129:8000"
data = {
"tgt": minionid,
"client": "local",
"fun": func,
"arg": args
}
resultBean = dict()
try:
res = self.session.post(url=url, data=data)
text = res.text
data = json.loads(text).get("return")
resultBean['code'] = 0
resultBean['message'] = 'success'
resultBean['data'] = data
except Exception as e:
resultBean['code'] = 1
resultBean['message'] = 'failed'
resultBean['data'] = e
finally:
return resultBean
def runrunner(self, func, args=None):
url = "http://192.168.145.129:8000"
data = {
"client": "runner",
"fun": func,
"arg": args
}
resultBean = dict()
try:
res = self.session.post(url=url, data=data)
text = res.text
data = json.loads(text).get("return")
resultBean['code'] = 0
resultBean['message'] = 'success'
resultBean['data'] = data
except Exception as e:
resultBean['code'] = 1
resultBean['message'] = 'failed'
resultBean['data'] = e
finally:
return resultBean
通过test.py
调用查看结果1
2
3
4
5
6
7from saltstack_api.util.saltapi import SaltServer
saltServer = SaltServer()
data = saltServer.runmodules("slave", "test.ping")
print(data)
data1 = saltServer.runrunner("manage.status")
print(data1)
注意:需要有安装saltstack的服务器存在且服务已启用。