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,如需转载请自行联系原作者


相关文章
|
4天前
|
安全 Java API
第7章 Spring Security 的 REST API 与微服务安全(2024 最新版)(上)
第7章 Spring Security 的 REST API 与微服务安全(2024 最新版)
22 0
第7章 Spring Security 的 REST API 与微服务安全(2024 最新版)(上)
|
14天前
|
缓存 前端开发 API
API接口封装系列
API(Application Programming Interface)接口封装是将系统内部的功能封装成可复用的程序接口并向外部提供,以便其他系统调用和使用这些功能,通过这种方式实现系统之间的通信和协作。下面将介绍API接口封装的一些关键步骤和注意事项。
|
21天前
|
监控 前端开发 JavaScript
实战篇:商品API接口在跨平台销售中的有效运用与案例解析
随着电子商务的蓬勃发展,企业为了扩大市场覆盖面,经常需要在多个在线平台上展示和销售产品。然而,手工管理多个平台的库存、价格、商品描述等信息既耗时又容易出错。商品API接口在这一背景下显得尤为重要,它能够帮助企业在不同的销售平台之间实现商品信息的高效同步和管理。本文将通过具体的淘宝API接口使用案例,展示如何在跨平台销售中有效利用商品API接口,以及如何通过代码实现数据的统一管理。
|
1天前
|
Java API Android开发
[NDK/JNI系列04] JNI接口方法表、基础API与异常API
[NDK/JNI系列04] JNI接口方法表、基础API与异常API
7 0
|
4天前
|
XML JSON API
快速淘宝商品详情页面API接口传输 php
PI(Application Programming Interface,应用程序接口)是一组预定义的函数、协议和工具,用于构建软件应用程序之间的交互。它允许不同的软件系统和应用通过统一的接口进行数据交换和通信
|
8天前
|
人工智能 API 开发者
免费使用Kimi的API接口,kimi-free-api真香
今年AI应用兴起,各类智能体涌现,但API免费额度有限。为解决这一问题,GitHub上的[kimi-free-api](https://github.com/LLM-Red-Team/kimi-free-api)项目提供了方便,支持高速流式输出、多轮对话等,与ChatGPT接口兼容。此外,还有其他大模型的免费API转换项目,如跃问StepChat、阿里通义Qwen等。该项目可帮助用户免费体验,通过Docker-compose轻松部署。只需获取refresh_token,即可开始使用。这个开源项目促进了AI学习和开发,为探索AI潜力提供了新途径。
203 2
|
11天前
|
小程序 前端开发 API
小程序全栈开发中的RESTful API设计
【4月更文挑战第12天】本文探讨了小程序全栈开发中的RESTful API设计,旨在帮助开发者理解和掌握相关技术。RESTful API基于REST架构风格,利用HTTP协议进行数据交互,遵循URI、客户端-服务器架构、无状态通信、标准HTTP方法和资源表述等原则。在小程序开发中,通过资源建模、设计API接口、定义资源表述及实现接口,实现前后端高效分离,提升开发效率和代码质量。小程序前端利用微信API与后端交互,确保数据流通。掌握这些实践将优化小程序全栈开发。
|
13天前
|
JSON 监控 API
在API接口对接中关键示例问题(1)
在API接口对接中,有几个关键的问题需要注意,以确保接口的稳定性、安全性和易用性。以下是这些问题及部分示例代码的简要概述
|
20天前
|
前端开发 Java API
构建RESTful API:Java中的RESTful服务开发
【4月更文挑战第3天】本文介绍了在Java环境中构建RESTful API的重要性及方法。遵循REST原则,利用HTTP方法处理资源,实现CRUD操作。在Java中,常用框架如Spring MVC简化了RESTful服务开发,包括定义资源、设计表示层、实现CRUD、考虑安全性、文档和测试。通过Spring MVC示例展示了创建RESTful服务的步骤,强调了其在现代Web服务开发中的关键角色,有助于提升互操作性和用户体验。
构建RESTful API:Java中的RESTful服务开发
|
22天前
|
XML API 网络架构
API 常用的接口类型都有哪些?
在软件开发的宏大舞台上,接口充当着不可或缺的角色,确保了不同的软件模块能够高效、无缝地沟通和协作。