简单整合saltstack与django,实现salt自动化运维

来源:互联网 发布:行知实践园观后感400 编辑:程序博客网 时间:2024/06/05 19:36

saltstack提供rest_cherrypy

地址:https://docs.saltstack.com/en/latest/ref/netapi/all/salt.netapi.rest_cherrypy.html

首先,我们在salt-master上面配置resful api,创建一个saltapi的用户,设置密码,

然后在salt-master配置文件中加入resful api 的配置:


resful api的地址就是:http://ip:8080

记得重启salt-master.

使用salt-api的原理就是:获取用户认证获取token->发送指令执行->返回结果

首先我们认证获取token:

在view中:

    def get_token():        url= 'http://IP:8080/login'        login_data = {'username':'saltapi','password':'密码','eauth':'pam'}        headers = {'Accept':'application/json'}        res = requests.post(url,headers=headers,data=login_data)        token = res.json()['return'][0]['token']        return token

获取 token之后,我们在写一个执行指令的方法:

    def saltCmd(ip,fun,*args,**kwargs):        token = get_token()        url = "http://IP:8080"        headers = {'Accept':'application/json',"X-Auth-Token":token}        res = requests.post(url,headers=headers,json=\                          {'client':'local','tgt':ip,'fun':fun,'arg':list(args),'kwarg':kwargs})        response = res.json()['return']        return response

编写一个前端交互的控制器:

    @login_required    def saltstack(request,ip):        fun = request.GET['fun']        args = request.GET['args']        kwargs = request.GET['kwargs']        res = saltCmd(ip,fun,args,kwargs)        return  HttpResponse(res)  #只是简单的测试,没有去渲染到html去了

url中:

    url(r'^salt/(.+)$', views.saltstack,name='saltstack'),

前端执行命令测试:


阅读全文
0 0
原创粉丝点击