简单整合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 的配置:


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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值