python salt-api使用
1.salt-api的安装
使用yum install salt-api安装api接口
2.基本调用
直接导入模块
执行结果为:
3.salt的内置环境变量:
在python的交互环境中,这些变量是不生效的,只有在自定义的模块,活着salt执行时才生效
__opts__ 配置文件,类型
__salt__ 执行modules
__salt__['cmd.run']('fdisk -l')
__salt__['network.ip_addrs']()
__pillar__ pillar
__grains__ grains
__context__
if not 'cp.fileclient' in __context__:
__context__['cp.fileclient'] = salt.fileclient.get_file_client(__opts__)
获取tokon:
4.自定义一些module
import json import requests class SaltServer(object): def __init__(self): self.session = requests.session() self.token = self.getToken() self.ipaddr = "http://192.168.1.55:8000" def getToken(self): url = "/login".format(self.ipaddr) headers = {"Accept": "application/json"} data = { "username": "saltapi", "password": "saltapi", "eauth": "pam" } res = self.session.post(url=url, headers=headers, data=data) text = res.text result = json.loads(text) token = result.get("return")[0].get("token") return token def runModules(self, minionid, fun, arg=None): url = self.ipaddr data = { "client": "local", "tgt": minionid, "fun": fun, "arg": arg } 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'] = 0 resultBean['message'] = "success" resultBean['data'] = e finally: return resultBean def runRunner(self, fun, arg=None): url = self.ipaddr data = { "client": "runner", "fun": fun, "arg": arg } 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'] = 0 resultBean['message'] = "success" resultBean['data'] = e finally: return resultBean