身為系統管理員,您可以使用雲端 API 以程式設計方式完成一般基礎結構管理工作,例如為角色或使用者指派權限、建立或更新工作或檢視工作傳回資料。可以在具有 Salt 主節點的環境中安裝 sseapiclient,也可以在沒有 Salt 主節點的環境中安裝。

開始之前

使用 sseapiclient 之前,請完成以下必要條件:

  1. 如果要在具有 Salt 主節點的環境中使用 sseapiclient
    1. 如果未在 Salt 主節點上安裝主節點外掛程式,請參閱安裝並設定主節點外掛程式以瞭解安裝指示。sseapiclient 與主節點外掛程式綁定在一起,會在安裝該外掛程式時進行安裝。
    2. 確認在 Salt 主節點上安裝了版本 8.11.1 或更新版本的主節點外掛程式。可以在主節點外掛程式工作區中找到主節點外掛程式版本。

      還可以透過主節點外掛程式工作區更新 Salt 主節點上的主節點外掛程式。如需詳細資訊,請參閱使用 [主節點外掛程式] 工作區

  2. 如果要在沒有 Salt 主節點的環境中使用 sseapiclient
    1. 執行以下命令,在裝置上安裝 Pika Python 和 PyJWT 程式庫:
      pip3 install pika==1.3.1
      pip3 install pyjwt==2.4.0
    2. 主節點外掛程式工作區下載 sseapiclient 的最新版本。然後執行以下命令,在裝置上安裝 sseapiclient
      pip3 install SSEApiClient-file-name.whl

      如需詳細資訊,請參閱使用 [主節點外掛程式] 工作區

    3. 確認 sseapiclient 版本與 Automation Config 的版本相符。可以在主節點外掛程式工作區中找到 Automation Config 版本。
  3. Automation Config 中建立工作。如需詳細資訊,請參閱〈如何建立工作〉

產生 API Token

連線到雲端 API 之前,必須使用 Cloud Services 主控台產生 API Token。此 Token 用於透過 VMware Cloud Services 對 Salt 主節點進行驗證。

  1. 在 Cloud Services 主控台工具列上,按一下您的使用者名稱,然後選取我的帳戶 > API Token
  2. 按一下產生 Token

    CSP 中的 API Token 頁面

  3. 完成表單。

    在 CSP 中產生 Token 表單

    1. 輸入 Token 的名稱。
    2. 選取 Token 的存留時間 (TTL)。預設持續時間為六個月。
      備註: 遭到入侵時,不會到期的 Token 可能存在安全性風險。如果發生這種情況,必須撤銷 Token。
    3. 定義 Token 的範圍。
      範圍 說明
      服務角色

      服務角色是內建的預先定義權限集,可授與 VMware Cloud Services 的存取權。

      若要存取 Automation Config 服務,請搜尋 Automation Config 服務,然後選取所需的服務角色。如需可用服務角色清單,請參閱如何定義使用者角色

    4. (可選) 設定電子郵件喜好設定,以便在 Token 即將到期時接收提醒。
    5. 按一下產生

      新產生的 API Token 將顯示在已產生 Token 視窗中。

  4. 將 Token 認證儲存到安全位置。

    產生 Token 後,您將只能在 API Token 頁面上看到 Token 的名稱,而看不到認證。若要重新產生 Token,請按一下重新產生

  5. 按一下繼續

執行 API 呼叫

產生 API Token 後,可以使用 sseapiclientcURL 進行 API 呼叫。

執行 API 呼叫:

  1. 登入安裝有 sseapiclient 的環境。
  2. 執行以下命令,並將伺服器值取代為特定於您區域的 Automation Config URL,將 API Token 值取代為之前產生的 API Token。以下代碼範例顯示了美國區域的 API 呼叫。
    Python
    from sseapiclient import APIClient
    client = APIClient(server='https://ssc-gateway.mgmt.cloud.vmware.com', csp_api_token='<api-token>')
    
    client.api.job.get_jobs()
    Python
    #For non-prod environments (e.g. scaleperf). Note the extra argument to the constructor:
    from sseapiclient import APIClient
    client = APIClient(server='https://ssc-gateway.scaleperf.symphony-dev.com', csp_api_token='<api-token>', csp_url='https://console-stg.cloud.vmware.com/')
    
    client.api.job.get_jobs()
    cURL
    SERVER="https://ssc-gateway.mgmt.cloud.vmware.com" && \
    API_TOKEN="<api-token>" && \
    BEARER_TOKEN=$(curl --silent 'https://console.cloud.vmware.com/csp/gateway/am/api/auth/api-tokens/authorize' \
    --header 'Content-Type: application/x-www-form-urlencoded' \
    --data-urlencode "api_token=$API_TOKEN" \
    | grep -o '"access_token":"[^"]*' | grep -o '[^"]*$') && \
    XSRFTOKEN=$(curl -s -I -X POST "$SERVER/account/login/" \
    --header "Authorization: Bearer $BEARER_TOKEN" \
    | awk '/X-XSRFTOKEN:|x-xsrftoken:/ {gsub("\r","",$2);print $2}') && \
    curl --location --request POST "$SERVER/rpc" \
    --header 'Content-Type: application/json' \
    --header "Authorization: Bearer $BEARER_TOKEN" \
    --header "X-XSRFTOKEN: $XSRFTOKEN" \
    --header "Cookie: _xsrf=$XSRFTOKEN; _xsrf=$XSRFTOKEN" \
    --data '{
        "resource": "job",
        "method": "get_jobs",
        "kwarg": {},
        "args": []
    }'
    表 1. Automation Config 的區域 URL
    區域 Automation Config URL
    美國 https://ssc-gateway.mgmt.cloud.vmware.com
    德國 https://de.ssc-gateway.mgmt.cloud.vmware.com
    印度 https://in.ssc-gateway.mgmt.cloud.vmware.com
    加拿大 https://ca.ssc-gateway.mgmt.cloud.vmware.com
    澳大利亞 https://au.ssc-gateway.mgmt.cloud.vmware.com
    UK https://uk.ssc-gateway.mgmt.cloud.vmware.com

結果

jobs.get_jobs() 端點傳回包含所有工作的清單。以下代碼範例顯示了一個成功回應範例。
Python
RPCResponse(riq=3, ret={'count': 1, 'results': [{'uuid': '60c14cfc-09ca-4b5a-bc76-8294287c2e6c',
 'name': 'Check disk usage', 'desc': 'Checks disk usage on targeted devices', 'cmd': 'local',
 'tgt_uuid': '7f93b928-388b-11e6-b133-346895ecb8f3', 'fun': 'disk.usage', 'arg': {'arg': [], 'kwarg':
 {}}, 'masters': [], 'metadata': {'auth': {'owner': {'uuid': '8964e9f3-6864-4fe5-ba4a-ab4530caa8ca',
 'config_name': 'internal', 'username': 'root'}, 'access': {}}}, 'tgt_name': 'CentOS'}], 'limit': 50},
 error=None, warnings=[])
cURL
{'riq': 3, 'ret': {'count': 1, 'results': [{'uuid': '60c14cfc-09ca-4b5a-bc76-8294287c2e6c',
 'name': 'Check disk usage', 'desc': 'Checks disk usage on targeted devices', 'cmd': 'local',
 'tgt_uuid': '7f93b928-388b-11e6-b133-346895ecb8f3', 'fun': 'disk.usage', 'arg': {'arg': [], 'kwarg':
 {}}, 'masters': [], 'metadata': {'auth': {'owner': {'uuid': '8964e9f3-6864-4fe5-ba4a-ab4530caa8ca',
 'config_name': 'internal', 'username': 'root'}, 'access': {}}}, 'tgt_name': 'CentOS'}], 'limit': 50}, 'error': null, 'warnings': []}
備註: 某些函數需要管理權限,例如 client.api.admin.trim_database()。如果您沒有足夠的權限,API 將擲回錯誤。

若要使用管理功能,可以產生新的 API Token 並選取超級使用者服務角色。

後續步驟

閱讀 VMware Developer 入口網站上的 API (RaaS) 說明文件,瞭解有關可用資源的更多資訊。