4.3. エクスポート API を使用したシステムインベントリーのエクスポート
エクスポート API を使用してインベントリーデータをエクスポートできます。REST API エントリーポイントである console.redhat.com/api/export/v1 を使用します。
Export Service API は、GET、POST、および DELETE HTTP メソッドをサポートします。API は以下のサービスを提供します。
- POST /exports
- GET /exports
- GET /exports/id
- DELETE /exports/id
- GET /exports/id/status
API は非同期で機能します。エクスポート API からエクスポートの POST/exports リクエストを送信し、そのエクスポートの ID を含む応答を受け取ることができます。その後、その ID を使用して、GET/exports/id/status リクエストでエクスポート操作の進行状況を監視できます。生成されたエクスポートが完了したら、ダウンロード (GET/exports/id) または削除 (DELETE/exports/id) できます。
リクエストが成功すると、次のレスポンスが返されます。
- 200 — 成功
- 202 — 正常に削除されました (DELETE メソッドの場合)
操作、スキーマ、およびオブジェクトの詳細は、Consoledot Export Service を参照してください。
4.3.1. システムインベントリーエクスポートの要求
エクスポートされたデータファイルを要求する前に、ダウンロード用の一意の ID を取得する必要があります。ID を取得するには、POST リクエストを発行します。サーバーは ID を含む応答を返します。GET/exports/id など、id パラメーターを必要とするリクエストで ID を使用します。
前提条件
- システムに適した権限を持つトークンベースのサービスアカウント
表示およびエクスポートするシステムの RBAC 権限
- Inventory:hosts:read (インベントリー内のすべてのシステムの場合は inventory:hosts:read * )
- ワークスペースのユーザーアクセスロール。ユーザーアクセスロールの詳細は、ワークスペースへのユーザーアクセス を参照してください。
手順
エクスポートサービスのリクエストを作成するか、次のサンプルリクエストコードを使用します。
{ "name": "Inventory Export", "format": "json", "sources": [ { "application": "urn:redhat:application:inventory", "resource": "urn:redhat:application:inventory:export:systems" } ] }
注記エクスポート形式として CSV または JSON をリクエストできます。
Hybrid Cloud Console で、API ドキュメント https://console.redhat.com/docs/api/export に移動します。
注記独自のカスタムクライアントを作成したり、自動化で API を使用したりする前に、API ドキュメントを使用して API に対してクエリーの試行および実行が可能です。
- POST /export を選択します。
- リクエスト本文 ウィンドウの既存のサンプルコードを削除し、リクエストコードをウィンドウに貼り付けます。
- Execute をクリックします。このリクエストによりエクスポートプロセスが開始されます。curl リクエストとサーバー応答、および POST 操作の結果コードが表示されます。
- サーバー応答の id フィールドを探します。id の文字列値をコピーして保存します。リクエストの id にこの値を使用します。
- オプション:GET /exports リクエストを発行します。サーバーは、curl リクエスト、リクエスト URL、および応答コードを返します。
- オプション:エクスポートリクエストのステータスを要求するには、GET/exports/id/status リクエストを発行します。
- エクスポートが完了したら、id の代わりにコピーした ID 文字列を使用して、GET/exports/id リクエストを発行します。サーバーは、エクスポートファイル (ペイロード) をダウンロードするためのリンクを返します。
- Download File をクリックします。ダウンロードが完了すると、ブラウザーに通知メッセージが表示されます。
- ブラウザー通知をクリックして、ダウンロードした zip ファイルを見つけます。
サーバーはエクスポートファイルを 7 日間保持します。
4.3.2. エクスポートファイルの削除
エクスポートされたファイルを削除するには、DELETE /exports/id 要求を発行します。
関連情報
- インベントリーエクスポートに関するナレッジベースアーティクル: Ability to export a list of registered inventory systems
- 複数のソースのエクスポートサービス API: https://developers.redhat.com/api-catalog/api/export-service
- コンソール内のエクスポートサービス API ドキュメント: https://console.redhat.com/docs/api/export
- 最新の OpenAPI 仕様については、https://swagger.io/specification/ を参照してください。
4.3.3. Ansible Playbook を使用したインベントリーエクスポートの自動化
Ansible Playbook を使用して、インベントリーエクスポートプロセスを自動化できます。この Playbook は、認証にトークンベースのサービスアカウントを使用するエクスポートサービスの汎用 Playbook です。
手順
- https://github.com/jeromemarc/insights-inventory-export に移動します。
- inventory-export.yml Playbook をダウンロードします。
- Playbook を実行します。Playbook は、エクスポート ID の要求からダウンロードステータスの要求、ダウンロードされたペイロードの要求まで、あらゆることを実行します。
関連情報
サービスアカウントの詳細は、ナレッジベースの記事 Transition of Red Hat Hybrid Cloud Console APIs from Basic authentication to token-based authentication via service accounts を参照してください。
4.3.4. 複数の Insights サービスに対するインベントリーエクスポートサービスの使用
インベントリーエクスポートサービスは、インベントリーや通知などの複数のサービスに使用できます。複数のサービスを要求するには、POST/exports リクスとに要求する各サービスのソース情報を含めます。以下に例を示します。
{ "name": "Inventory Export multiple sources", "format": "json", "sources": [ { "application": "urn:redhat:application:inventory", "resource": "urn:redhat:application:inventory:export:systems", "filters": {} }, { "application": "urn:redhat:application:notifications", "resource": "urn:redhat:application:notifications:export:events", "filters": {} } ] }
POST/exports リクエストは、エクスポートごとに一意の ID を返します。
GET/exports リクエストは、要求したサービスごとに 1 つずつ、複数の JSON または CSV ファイルを含む zip ファイルを返します。