システム管理者はクラウド API を使用して、ロールまたはユーザーへの権限の割り当て、ジョブの作成または更新、ジョブの戻り値の表示など、一般的なインフラストラクチャ管理タスクをプログラムによって実行できます。sseapiclient
は、Salt マスターを含む環境にも含まない環境にもインストールできます。
開始する前に
sseapiclient
を使用する前に、次の前提条件を完了します。
- Salt マスターが含まれる環境で
sseapiclient
を使用する場合は、次の手順を実行します。- Salt マスターにマスター プラグインをインストールしていない場合は、マスター プラグインのインストールと構成でインストール手順を参照してください。
sseapiclient
はマスター プラグインにバンドルされており、プラグインのインストール時にインストールされます。 - Salt マスターにマスター プラグインのバージョン 8.11.1 以降がインストールされていることを確認します。マスター プラグインのバージョンは、[マスター プラグイン] ワークスペースで確認できます。
[マスター プラグイン] ワークスペースで Salt マスターのマスター プラグインを更新することもできます。詳細については、マスター プラグイン ワークスペースの使用を参照してください。
- Salt マスターにマスター プラグインをインストールしていない場合は、マスター プラグインのインストールと構成でインストール手順を参照してください。
- Salt マスターのない環境で
sseapiclient
を使用する場合は、次の手順を実行します。- 次のコマンドを実行して、デバイスに Pika Python および PyJWT ライブラリをインストールします。
pip3 install pika==1.3.1 pip3 install pyjwt==2.4.0
- [マスター プラグイン] ワークスペースから、
sseapiclient
の最新バージョンをダウンロードします。次のコマンドを実行して、デバイスにsseapiclient
をインストールします。pip3 install SSEApiClient-file-name.whl
詳細については、マスター プラグイン ワークスペースの使用を参照してください。
sseapiclient
のバージョンが Automation Config のバージョンと一致していることを確認します。Automation Config のバージョンは、[マスター プラグイン] ワークスペースで確認できます。
- 次のコマンドを実行して、デバイスに Pika Python および PyJWT ライブラリをインストールします。
- Automation Config でジョブを作成します。詳細については、ジョブの作成方法を参照してください。
API トークンの生成
クラウド API に接続するには、事前に Cloud Services コンソールを使用して API トークンを生成する必要があります。このトークンは、Salt マスターを VMware Cloud Services で認証する際に使用されます。
- Cloud Services コンソールのツールバーでユーザー名をクリックし、 の順に選択します。
- [トークンの生成] をクリックします。
- フォームに入力します。
- トークンの名前を入力します。
- トークンの TTL 時間を選択します。デフォルトの期間は 6 か月です。
注: 期限のないトークンは、侵害された場合にセキュリティ リスクになる可能性があります。そのような場合は、トークンを取り消す必要があります。
- トークンの範囲を定義します。
範囲 説明 サービス ロール サービス ロールは、VMware Cloud Services へのアクセスを許可する組み込みの事前定義された権限セットです。
Automation Config サービスにアクセスするには、Automation Config サービスを検索し、目的のサービス ロールを選択します。使用可能なサービス ロールのリストについては、ユーザー ロールの定義方法を参照してください。
- (オプション)トークンの有効期限が近付いたときにリマインダを受信するように E メールを設定します。
- [生成] をクリックします。
新しく生成された API トークンが [生成したトークン] ウィンドウに表示されます。
- トークンの認証情報を安全な場所に保存します。
トークンの生成後は、[API トークン] 画面にトークンの名前のみが表示されます。認証情報は表示されません。トークンを再生成するには、[再生成] をクリックします。
- [続行] をクリックします。
API 呼び出しを行う
API トークンを生成したら、sseapiclient
または cURL
を使用して API 呼び出しを行うことができます。
API 呼び出しを行うには、次の手順を実行します。
sseapiclient
をインストールした環境にログインします。- 次のコマンドを実行します。その際、サーバの値をリージョン固有の 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()
- 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 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) のドキュメントを参照してください。