API (RaaS) 是指 SaltStack Config 用戶端連線到的應用程式伺服器。這些用戶端包括 SaltStack Config 的使用者介面元件、正確設定的主節點以及 RaaS 的其他使用者。應用程式伺服器也稱為 eAPI 伺服器。
RaaS 將組織整理成模組 (稱為「資源」) 和函數 (稱為「方法」)。在 API 呼叫 test.echo(‘hello, world’) 中,資源為 test,方法為 echo()。可以按位置或關鍵字將引數傳遞至方法。
RaaS 可透過兩種方式進行存取:RPC 用戶端和 HTTP (或 HTTPS) 橋接器。
若要連線至 RaaS,請在 client = APIClient() 中設定這些選項:
- 伺服器
- username
- 密碼
- config_name=’internal’ (如果使用 LDAP,則變更為驗證後端名稱)
- timeout=60 # (執行任何作業最多需要 60 秒)
- ssl_key=None
- ssl_cert=None
- ssl_context=None
- ssl_validate_cert=True (如果使用自我簽署憑證,則設定為 False)
範例:
from sseapiclient import APIClient client = APIClient('https://localhost', 'root', 'PASSWORD', ssl_validate_cert=False)
在 6.2 之前的版本中,使用 SyncClient.connect()
進行 API 連線,這一點仍與 6.2 及更高版本相容。如果使用 SyncClient.connect()
,則不需要進行變更。
API 語法
client.api.<interface>.<method>(parameter=parameter_value)
範例:
from sseapiclient import APIClient client = APIClient('https://localhost', 'root', 'PASSWORD') client.api.sec.download_content(auto_ingest=True)
將 API (RaaS) 與 Curl 搭配使用
也可以將 RaaS 直接與 HTTP 和 JSON 搭配使用。將 API 與 curl
搭配使用的範例如下。請注意,如果 xsrf 已啟用,則需要先取得 xsrf Cookie 和 Token。請參閱 HTTP 橋接器,以瞭解如何取得並使用 xsrf Token 和 Cookie。使用 Python API 用戶端時,此操作預設會自動完成。
範例:
curl --user 'root:PASSWORD' --url 'https://localhost/rpc' \ --data '{ "resource": "sec", "method": "download_content", "kwarg": {"auto_ingest": true} }'
授權
授權即將到期時,SaltStack Config 使用者介面會顯示警告通知。身為 RaaS 使用者,您必須使用 [授權] 工作區來追蹤授權狀態並確保其保持作用中狀態。如果授權到期,RaaS 服務便會停止。
RPC 用戶端
sseapiclient 模組中的程式設計 RPC 用戶端可與 Python 2.7 版和 Python 3.5 版或更新版本一起使用。這些用戶端會透過 HTTP 或 HTTPS 連線至 SSE 並進行驗證。使用 RPC 用戶端的優勢在於,比 HTTP 橋接器更便於使用。
HTTP 橋接器
HTTP (或 HTTPS) 橋接器接受以 POST 形式傳遞到 SSE 公開之端點的 JSON 裝載,將裝載轉換為 RPC 呼叫,然後以 JSON 形式傳回結果。端點支援以 Cookie 為基礎的驗證,因此每個工作階段只需傳遞一次驗證認證。此外,橋接器還允許在單一裝載中傳送多個呼叫。
如果在 /etc/raas/raas.conf (tornado_xsrf_cookies_enabled: True) 中啟用了 xsrf (在狀態安裝中為預設設定),則需要在 REST 呼叫的標頭上提供 X-Xsrftoken:。最佳方式是儲存具有 GET 呼叫的 cookie,然後使用此 cookie 提供標頭 Token。此 cookie 將儲存在 $HOME (使用者首頁) 目錄中。裝載是字典。
具有 xsrf 標頭的 curl 呼叫範例:
curl -k -c $HOME/eAPICookie.txt -u root:PASSWORD 'https://localhost/account/login' >/dev/null curl -k -u root:PASSWORD -b $HOME/eAPICookie.txt \ -H 'X-Xsrftoken: '$(grep -w '_xsrf' $HOME/eAPICookie.txt | cut -f7)'' \ -X POST https://localhost/rpc \ -d '{ "resource": "sec", "method": "download_content", "kwarg": {"auto_ingest": true} }'
這些範例假設:
- client=APIClient(<addr>,<user>, <pwd>)
- 以預設狀態為基礎安裝 eAPI
- SSL 已啟用
- 匯入 sseapiclient。範例:
from sseapiclient import APIClient