简单整合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
- 简单整合saltstack与django,实现salt自动化运维
- 自动化运维工具Saltstack学习笔记(salt-ssh/salt-api/salt-syndic)
- saltstack运维自动化的安装与简单配置(一)
- 运维自动化之salt
- 运维自动化之salt
- 自动化运维工具---saltstack
- 自动化运维工具SaltStack
- 自动化运维工具SaltStack详细部署及用SaltStack实现自动部署lamp架构
- 自动化运维平台saltstack的使用与搭建
- 自动化管理工具Saltstack之Salt-api篇(16)
- 自动化运维工具SaltStack详细部署
- 自动化运维工具SaltStack详细部署
- 自动化运维工具SaltStack详细部署
- 自动化运维工具SaltStack详细部署
- 自动化运维工具SaltStack详细部署
- 自动化运维工具SaltStack详细部署
- 自动化运维工具SaltStack详细部署
- 自动化运维工具SaltStack详细部署
- XlsxWriter模块常用方法说明
- Java学习笔记之JDK1.5新特性(四):自动装箱和自动拆箱
- OpenStack Tacker介绍
- 一分钟解决你的公有云私有云选择困难症
- AA制算法-java
- 简单整合saltstack与django,实现salt自动化运维
- 《剑指Offer》 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。
- @Service注解@Resource在何时使用
- Java学习笔记之JDK1.5新特性(五):枚举类
- POI 合并单元格
- 汇编语言学习第一天
- Qt学习笔记 -------------------------QWidget 1
- calendar.getActualMaximum(calendar.DAY_OF_MONTH)的陷阱
- vue-resource、Vue中response的get、post和jsonp请求例子