saltstack的rest接口salt-api开发使用指南

简介:

前言:

   saltsatck本身就提供了一套算完整的api,专业说法 sdk。 saltstack 的webui hahite就是用cherrypy框架和salt接口组成的。


salt-api 简单配置下

安装:

1
yum -y install salt-api


配置:

1
2
3
4
5
6
7
8
9
10
11
[root@ 65  ~]# tail -n  10  /etc/salt/master
#         -  '*'
rest_cherrypy:
   port:  8000
   debug: True
   ssl_crt: /etc/pki/tls/certs/ca.crt
   ssl_key: /etc/pki/tls/certs/ca.key
external_auth:
   pam:
     admin:
       - .*


下面的测试用的是curl做的,线上环境调用的话,肯定不能这么搓,可以用python的urllib2 。

登录,然后获取token


1
curl  - k https: / / 10.10 . 10.65 : 8000 / login  - "Accept: application/x-yaml"   - d username = 'admin'   - d password = '123123'   - d eauth = 'pam'


wKiom1MLaOng1mAXAAHICb2x_Gs256.jpg


原文:http://rfyiamcool.blog.51cto.com/1030776/1362979

这里是使用获取的token,查询硬盘的使用情况


1
2
3
4
5
6
curl -k https: //10.10.10.65:8000 \
         -H  "Accept: application/x-yaml"  \
         -H  "X-Auth-Token: f43a327ec50615ee0e3dc988cc7e290276ac959e"  \
         -d client=local \
         -d tgt= '*'  \
         -d fun= 'status.diskusage'


wKioL1MLaYzx7XBdAANGMPpGMcE458.jpg


调用它的模块

1
2
3
4
5
6
7
curl -k https: //10.10.10.65:8000 \
         -H  "Accept: application/x-yaml"  \
         -H  "X-Auth-Token: f43a327ec50615ee0e3dc988cc7e290276ac959e"  \
         -d client=local \
         -d tgt= '*'  \
         -d fun= 'cmd.run'  \
         -d arg= "free -m"


wKiom1MLaoTCTgFPAAK0f1MY1rY368.jpg



   我这里测试了下他的性能,不是对他性能的测试,因为就算是bottle这样的web框架也能抗住500+的压力,这里测试他的是他的堵塞,我开了两个终端,都是sleep 5 ,第二个链接花费了9s,很明显是堵塞的接口。 当然,我的测试方法也很是片面,salt-api 也是有jobs的jid支持的。也可以cherrypy nginx的uwsgi配合,多开几个线程。


wKiom1MLbm3wDYDZAAKkFhFLB6k627.jpg



虽然salt-api的接口相对来说,不管是文档还是使用易度算方便,但是这东西是cherrypy写的,绝对不主流的东西,我先前搞hahite的时候,研究一段时间的cherrypy,基本的mvc和session也都过了一遍,感觉用起来还是不爽。 所以 个人觉得完全可以自己写一套自己的api,不用非要rest,在接口上把安全做好就行了。


这里讲解下,saltsatck的api,我发现群里有人迷茫了,saltstack api 是一个直接调用函数的集合罢了,salt-api是一个基于cherrypy的rest接口 !!!


1
2
3
4
In [ 8 ]:  import  salt.client
In [ 9 ]: local = salt.client.LocalClient()
In [ 10 ]: local.cmd( '*' 'cmd.run' , [ 'ip a' ])
Out[ 10 ]: { '66.ruifengyun.com' '1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN \n    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n    inet 127.0.0.1/8 scope host lo\n    inet6 ::1/128 scope host \n       valid_lft forever preferred_lft forever\n2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000\n    link/ether 00:0c:29:06:f2:dc brd ff:ff:ff:ff:ff:ff\n    inet 10.10.10.66/24 brd 10.10.10.255 scope global eth0\n    inet6 fe80::20c:29ff:fe06:f2dc/64 scope link \n       valid_lft forever preferred_lft forever' }


可以一次套用多个模块 !

1
2
3
4
5
6
7
8
9
10
>>> local.cmd( '*' , [
         'grains.items' ,
         'sys.doc' ,
         'cmd.run' ,
     ],
     [
         [],
         [],
         [ 'uptime' ],
     ])

通过saltstack的run_job可以实现任务的后台执行,扔到后面之前,会扔出一个job id !

wKiom1MLdonTPf96AAJWHoZa7H0147.jpg


得到jid后,salt-run jobs.lookup_jid <job id number> 直接获取数据 !

在api里面可以用runner.low 方法:

1
runner.low({ 'fun' 'jobs.lookup_jid' 'jid' '20131219215921857715' })



就说到这里啦,大家自己玩玩吧,有问题,拿出来咱们讨论下 ~ 有更好的见解,请指出,绝对受教 !!!






 本文转自 rfyiamcool 51CTO博客,原文链接:http://blog.51cto.com/rfyiamcool/1362979,如需转载请自行联系原作者


相关文章
|
6天前
|
JavaScript API 开发者
GraphQL API开发入门:比RESTful更高效的数据查询方式
**GraphQL API开发入门摘要** GraphQL是一种更高效的数据查询方式,解决RESTful API的过度或不足获取数据问题。它允许客户端按需获取数据,减少网络传输,支持一次请求获取多资源。强类型和自描述特性方便了开发。文章通过一个简单的Node.js示例,展示如何使用`apollo-server-express`搭建GraphQL服务器,包括定义Schema、实现Resolver和创建服务器。通过测试,显示了GraphQL如何提供精确数据和优化查询效率。对于复杂数据需求,GraphQL是现代API设计的有效选择。
17 0
|
1天前
|
开发框架 Java API
Java中的REST API开发详解
Java中的REST API开发详解
|
4天前
|
Java API PHP
【亲测有效,官方提供】php版本企查查api接口请求示例代码,php请求企查查api接口,thinkphp请求企查查api接口
【亲测有效,官方提供】php版本企查查api接口请求示例代码,php请求企查查api接口,thinkphp请求企查查api接口
11 1
|
4天前
|
开发框架 安全 .NET
使用VB.NET构建Web服务和REST API的指南
【7月更文挑战第2天】使用VB.NET构建Web服务和REST API的指南:从Web服务基础到ASP.NET Core实践,涵盖控制器、路由、模型绑定、安全措施(如JWT、HTTPS)及测试、部署(Azure、Docker)与监控工具。了解如何利用VB.NET在现代云环境中创建高效、安全的API。开始你的VB.NET Web服务开发之旅!**
6 1
|
2天前
|
NoSQL 安全 API
如何有效提升 API 接口的安全性?
**API安全关键在于验证和防刷。通过排序参数、生成签名和MD5加密确保请求合法性。使用Redis限制请求频率,防止接口被恶意刷取。验证和防刷策略结合,保护API免受攻击和滥用。**
14 0
|
3天前
|
开发框架 Java API
Java中的REST API开发详解
Java中的REST API开发详解
|
3天前
|
数据采集 自然语言处理 算法
淘宝评论的 API 接口获取:技术探索与应用
这篇文稿探讨了淘宝评论API在数据驱动的商业环境中的重要性。API接口使得高效、精准地获取淘宝评论成为可能,帮助企业分析消费者反馈、优化产品和服务,以及训练智能算法。通过API,商家能实时监控评论以快速响应市场变化,同时确保数据合规性和安全性。然而,获取和使用数据涉及复杂的接口调用、数据清洗、反爬虫机制应对等挑战。通过实际案例,展示了API如何促进产品优化、市场研究和智能客服改进。随着技术发展,未来将有更多创新应用,但也需面对更严格的法规监管。
|
3天前
|
API 开发工具
支付系统17------支付宝支付-----API预览以及签名验签说明,出现支付宝扫描二维码的操作,支付完成之后,查询订单的状态,支付成功之后,需要退款调用的接口,退款状态的接口,完成退款之后,通知
支付系统17------支付宝支付-----API预览以及签名验签说明,出现支付宝扫描二维码的操作,支付完成之后,查询订单的状态,支付成功之后,需要退款调用的接口,退款状态的接口,完成退款之后,通知
|
4天前
|
缓存 Java API
Java中设计和优化REST API的技巧
Java中设计和优化REST API的技巧
|
4天前
|
API 开发工具 开发者
如何通过 1688 商品详情的 API 接口获取商品的详细信息
在数字化商业环境中,利用1688 API获取商品详情对企业和开发者至关重要。步骤包括:1) 成为1688开发者并注册;2) 申请API权限,选择合适的接口;3) 深入理解API文档;4) 配置开发环境;5) 发送GET请求,例如使用Python的`requests`库;6) 处理响应数据并进行错误处理。确保遵循文档,精确编程,以获取有价值的商品信息。遇到问题时,参考API文档或寻求技术支持。