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

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 的配置:

简单整合saltstack与django,实现salt自动化运维_第1张图片

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'),

前端执行命令测试:


你可能感兴趣的:(简单整合saltstack与django,实现salt自动化运维)