您也可以參考在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