您也可以参考在Github上维护的这一份技术资料:rest_wsgi
文章目录
A minimalist REST API for Salt - 一个极简的Salt REST API
这个rest_wsgi
模块提供了一个简洁的REST接口实现,用于将命令发送到Salt master服务器。 不需要依赖于其它工具包。
将该模块部署到生产中时,必须格外小心。 请先完整阅读本文档。
所有身份验证均通过Salt的 external auth 外部身份验证系统完成。
Usage - 用法
- 所有的访问请求都必须发送到根 URL (
/
)。 - 所有的访问请求都必须使用JSON的数据格式以POST方式发送。
- 所有的响应结果都是以JSON格式返回的。
See also:rest_cherrypy
rest_cherrypy
模块提供了更多的功能、生产环境适配以及内置的安全特性。
Deployment - 部署方式
rest_wsgi
netapi模块是标准的Python WSGI应用程序。可以采用以下两种方法之一进行部署。
使用兼容WSGI的Web服务器
该模块可以通过任何符合WSGI规范的生产服务器运行,例如具有mod_wsgi的Apache或具有FastCGI的Nginx。
强烈建议将此应用与支持HTTPS加密的服务器一起使用,因为原始的Salt身份验证凭据必须随每个请求一起发送。通过此接口访问Salt的所有应用都需要手动管理身份验证凭据(用户名和密码或Salt令牌)。请谨慎使用。
使用仅用于开发服务的salt-api
如果直接通过salt-api守护程序运行,它将使用Python标准库中附带的wsgiref.simple_server()。这是用于测试和开发的单线程服务器。该服务器不使用加密;请注意,原始的Salt身份验证凭据会随每个HTTP请求一起发送。
不建议通过salt-api运行该模块!
为了通过salt-api守护程序启动此模块,必须将以下内容放入Salt master配置中:
rest_wsgi:
port: 8001
Usage examples - 用法示例
POST /
执行一个基础的 `test.ping` 命令的request请求:
% curl -sS -i \
-H 'Content-Type: application/json' \
-d '[{"eauth":"pam","username":"saltdev","password":"saltdev","client":"local","tgt":"*","fun":"test.ping"}]' localhost:8001
response响应结果:
HTTP/1.0 200 OK
Content-Length: 89
Content-Type: application/json
{"return": [{"ms--4": true, "ms--3": true, "ms--2": true, "ms--1": true, "ms--0": true}]}
异步方式执行一个 test.ping
命令:
% curl -sS -i \
-H 'Content-Type: application/json' \
-d '[{"eauth":"pam","username":"saltdev","password":"saltdev","client":"local_async","tgt":"*","fun":"test.ping"}]' localhost:8001
response响应结果:
HTTP/1.0 200 OK
Content-Length: 103
Content-Type: application/json
{"return": [{"jid": "20130412192112593739", "minions": ["ms--4", "ms--3", "ms--2", "ms--1", "ms--0"]}]}
查看一个指定job ID任务的详细信息的示例:
% curl -sS -i \
-H 'Content-Type: application/json' \
-d '[{"eauth":"pam","username":"saltdev","password":"saltdev","client":"runner","fun":"jobs.lookup_jid","jid":"20130412192112593739"}]' localhost:8001
response响应结果:
HTTP/1.0 200 OK
Content-Length: 89
Content-Type: application/json
{"return": [{"ms--4": true, "ms--3": true, "ms--2": true, "ms--1": true, "ms--0": true}]}
form lowstate
适用于您正在调用的客户端接口的一个lowstate状态数据列表。
status 200
success
status 401
authentication required