SaltStack netapi模块REST API——rest_wsgi

戏子无情 提交于 2019-12-02 12:29:01

您也可以参考在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
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!