システム管理者はクラウド API を使用して、ロールまたはユーザーへの権限の割り当て、ジョブの作成または更新、ジョブの戻り値の表示など、一般的なインフラストラクチャ管理タスクをプログラムによって実行できます。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 トークンの生成

クラウド API に接続するには、事前に Cloud Services コンソールを使用して API トークンを生成する必要があります。このトークンは、Salt マスターを VMware Cloud Services で認証する際に使用されます。

  1. Cloud Services コンソールのツールバーでユーザー名をクリックし、[マイ アカウント] > [API トークン] の順に選択します。
  2. [トークンの生成] をクリックします。

    CSP の [API トークン] 画面

  3. フォームに入力します。

    CSP でのトークン フォームの生成

    1. トークンの名前を入力します。
    2. トークンの TTL 時間を選択します。デフォルトの期間は 6 か月です。
      注: 期限のないトークンは、侵害された場合にセキュリティ リスクになる可能性があります。そのような場合は、トークンを取り消す必要があります。
    3. トークンの範囲を定義します。
      範囲 説明
      サービス ロール

      サービス ロールは、VMware Cloud Services へのアクセスを許可する組み込みの事前定義された権限セットです。

      Automation Config サービスにアクセスするには、Automation Config サービスを検索し、目的のサービス ロールを選択します。使用可能なサービス ロールのリストについては、ユーザー ロールの定義方法を参照してください。

    4. (オプション)トークンの有効期限が近付いたときにリマインダを受信するように E メールを設定します。
    5. [生成] をクリックします。

      新しく生成された API トークンが [生成したトークン] ウィンドウに表示されます。

  4. トークンの認証情報を安全な場所に保存します。

    トークンの生成後は、[API トークン] 画面にトークンの名前のみが表示されます。認証情報は表示されません。トークンを再生成するには、[再生成] をクリックします。

  5. [続行] をクリックします。

API 呼び出しを行う

API トークンを生成したら、sseapiclient または cURL を使用して API 呼び出しを行うことができます。

API 呼び出しを行うには、次の手順を実行します。

  1. sseapiclient をインストールした環境にログインします。
  2. 次のコマンドを実行します。その際、サーバの値をリージョン固有の Automation Config URL に、API トークンの値を上記の手順で生成した API トークンにそれぞれ置き換えます。次のサンプル コードは、米国リージョンでの 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()
    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
    US 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 トークンを生成し、[スーパー ユーザー] サービス ロールを選択します。

次の手順

使用可能なリソースの詳細については、VMware Developer Portal にあるAPI (RaaS) のドキュメントを参照してください。