API ガイド
Red Hat Satellite の Representational State Transfer (REST) API 使用ガイド
概要
第1章 Red Hat Satellite API について リンクのコピーリンクがクリップボードにコピーされました!
1.1. Red Hat Satellite API リンクのコピーリンクがクリップボードにコピーされました!
- 幅広いクライアントサポート: HTTP プロトコルをサポートする各種プログラミング言語、フレームワークまたはシステムで API を使用できます。
- 自己記述型: 実行時に多くの詳細が発見されるため、クライアントアプリケーションでは、Red Hat Satellite インフラストラクチャーに関する知識が最小限で済みます。
- リソースベースのモデル: リソースベースの REST モデルにより仮想化プラットフォームを自然な形で管理することが可能です。
- エンタープライズ IT システムとの統合
- サードパーティー製のアプリケーションとの統合
- 自動メンテナンスやエラーチェックなどのタスクの実行
- スクリプトによる反復タスクの自動化
1.2. Representational State Transfer リンクのコピーリンクがクリップボードにコピーされました!
GET、POST、PUT、DELETE などの標準の HTTP メソッドで操作を実行します。これにより、クライアントとサーバー間でステートレスに通信が行われ、各要求が他の要求とは独立して機能し、要求完了に必要なすべての情報が含まれます。
1.3. Hammer CLI ツールと Satellite API の比較 リンクのコピーリンクがクリップボードにコピーされました!
-d organization listなど、Hammer で発行した API の呼び出しを検査するには-d オプションを使用します)。API での変更は自動的に Hammer に適用されますが、API を直接使用するスクリプトは手動で更新する必要があります。
第2章 API リファレンス リンクのコピーリンクがクリップボードにコピーされました!
2.1. API 構文の理解 リンクのコピーリンクがクリップボードにコピーされました!
HTTP_VERB API_ROUTE
HTTP_VERB API_ROUTE
curl [options] [URL...]
curl [options] [URL...]
-X、--request コマンド が含まれます。ここでの command は HTTP 動詞です。
HTTP 動詞 (GET) の使用
GET /api/hosts などの API HOST セクションと curl 構文を組み合わせると、以下のようになります。curl -X GET https://satellite6.example.com/api/hosts
curl -X GET https://satellite6.example.com/api/hosts
-u オプションを指定してユーザー名を追加し、SSL ピア証明書の検証チェックをスキップするには -k オプションを追加する必要があります。
:パラメーターの前にコロンが付いた用語が含まれています。たとえば、GET /api/hosts/:id
GET /api/hosts/:id
終わる。
v2 を使用する必要はありません。
HTTP 動詞 (POST) の使用
d, --data オプションの後に中かっこ {} で囲まれた引用符で囲まれた JSON 形式のデータをイン ラインで含めることができます。引用符で囲まれていない JSON 形式のデータをファイルで囲み、curl コマンドの @ オプションを使用して指定することもできます。たとえば、d @ファイル.json です。
json_verify < test_file.json
$ json_verify < test_file.json
curl API_call | python -m json.tool
curl API_call | python -m json.tool
curl API_call | json_reformat
curl API_call | json_reformat
POST /katello/api/activation_keys
POST /katello/api/activation_keys
POST /katello/api/activation_keys コマンドの形式になります。
curl -X POST -k -u sat_username:sat_password \ -d @file_of_json-formatted_data \ https://satellite6.example.com/katello/api/activation_keys
curl -X POST -k -u sat_username:sat_password \
-d @file_of_json-formatted_data \
https://satellite6.example.com/katello/api/activation_keys
activation-key.json )を作成します。
{"organization_id":1, "name":"TestKey", "description":"Just for testing"}
{"organization_id":1, "name":"TestKey", "description":"Just for testing"}
HTTP 動詞 (PUT) の使用
d, --data オプションの後に中かっこ {} で囲まれた引用符で囲まれた JSON 形式のデータをイン ラインで含めることができます。引用符で囲まれていない JSON 形式のデータをファイルで囲み、curl コマンドの @ オプションを使用して指定することもできます。たとえば、d @ファイル.json です。
PUT /katello/api/activation_keys/:id
PUT /katello/api/activation_keys/:id
curl -X PUT -k -u sat_username:sat_password \ -d @file_of_json-formatted_data \ https://satellite6.example.com/katello/api/activation_keys/:id
curl -X PUT -k -u sat_username:sat_password \
-d @file_of_json-formatted_data \
https://satellite6.example.com/katello/api/activation_keys/:id
{"organization_id":1, "name":"TestKey", "description":"Just for testing","max_hosts":"10" }
{"organization_id":1, "name":"TestKey", "description":"Just for testing","max_hosts":"10" }
HTTP 動詞 (DELETE) の使用
curl -X DELETE -k -u sat_username:sat_password \ https://satellite6.example.com/katello/api/activation_keys/:id
curl -X DELETE -k -u sat_username:sat_password \
https://satellite6.example.com/katello/api/activation_keys/:id
API エラーメッセージと API リファレンスの関連付け
Nested_Resource.Attribute_Name
Nested_Resource.Attribute_Name
Resource[Nested_Resource_attributes][Attribute_Name_id]
Resource[Nested_Resource_attributes][Attribute_Name_id]
2.2. JSON 応答形式の理解 リンクのコピーリンクがクリップボードにコピーされました!
コレクション用の JSON 応答形式
GET /api/domains を使用する場合のドメイン一覧のコレクション JSON レスポンスの形式例です。この出力は json.tool でパイプされ、結果セクションを読みやすくしました。
total: 検索パラメーターなしのオブジェクトの合計数Subtotal: 検索パラメーターを指定して返されたオブジェクトの数(検索がない場合は、合計が合計と同じになります)。page: ページ番号。per_page: ページごとに返す最大オブジェクト数limit: コレクションの応答で返すオブジェクトの指定数offset: コレクションを返す前に省略するオブジェクト数Search:scoped_scoped構文をもとにした検索文字列sortby: コレクションがソートされるフィールド。order: ソート順(ASC は昇順、DESC は降順)
結果: オブジェクトのコレクション
単一オブジェクトの JSON 応答形式
:id または :name が必要です。:name は、常に一意の識別子として使用できませんが、:id を常に使用できます。単一オブジェクトの JSON 応答の形式は、オブジェクトの属性のみで設定されます。
23 または GET /api/domains/ qa.lab.example.com を使用する場合の単一オブジェクト JSON 応答の形式例です。
第3章 API 呼び出しの認証 リンクのコピーリンクがクリップボードにコピーされました!
3.1. SSL 認証の使用 リンクのコピーリンクがクリップボードにコピーされました!
- 以下のオプションのいずれかを使用して、通信する Satellite Server (satellite6.example.com)から証明書を取得します。
- SSH を使用して証明書を取得するには、以下のコマンドを実行します。
scp root@satellite6.example.com:/var/www/html/pub/katello-server-ca.crt ./
$ scp root@satellite6.example.com:/var/www/html/pub/katello-server-ca.crt ./Copy to Clipboard Copied! Toggle word wrap Toggle overflow - コマンドを Satellite Server で直接実行する場合は、以下のコマンドを実行してローカルで利用可能なコピーから証明書を取得します。
cp /var/www/html/pub/katello-server-ca.crt ./
$ cp /var/www/html/pub/katello-server-ca.crt ./Copy to Clipboard Copied! Toggle word wrap Toggle overflow - HTTP を使用して証明書を取得するには、以下のコマンドを実行します。
curl -O http://satellite6.example.com/pub/katello-server-ca.crt
$ curl -O http://satellite6.example.com/pub/katello-server-ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 警告暗号化されていない HTTP 接続を使用して証明書を取得すると、セキュリティーリスクにさらされる可能性があります。
- クライアント上の証明書を認証局として使用して、Satellite Server の ID を検証します。
curl -X GET -u sat_username:sat_password \ -H "Accept:application/json" --cacert katello-server-ca.crt \ https://satellite6.example.com/katello/api/organizations
$ curl -X GET -u sat_username:sat_password \ -H "Accept:application/json" --cacert katello-server-ca.crt \ https://satellite6.example.com/katello/api/organizationsCopy to Clipboard Copied! Toggle word wrap Toggle overflow GET はデフォルトのアクションであるため、ここで は GET 属性を省略することができます。 - Network Security Services (NSS) データベースを作成して証明書を保存します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NSS データベースがすでに存在する場合には、以下のようにパスワードが求められます。Enter Password or Pin for "NSS Certificate DB":
Enter Password or Pin for "NSS Certificate DB":Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 以下のコマンドを使用して、NSS データベースに永続的に証明書を追加します。
certutil -d sql:$HOME/.pki/nssdb -A -t TC -n "Red Hat Satellite" \ -i katello-server-ca.crt
$ certutil -d sql:$HOME/.pki/nssdb -A -t TC -n "Red Hat Satellite" \ -i katello-server-ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、証明書が NSS データベースにインポートされます。つまり、要求ごとに the-cacertオプションを省略できます。これは、次のようにテストできます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2. HTTP 認証の使用 リンクのコピーリンクがクリップボードにコピーされました!
3.3. OAuth 認証の使用 リンクのコピーリンクがクリップボードにコピーされました!
3.3.1. OAuth の認証 リンクのコピーリンクがクリップボードにコピーされました!
/etc/foreman/settings.yaml 設定ファイルに保存され、 → → に移動して Web UI で確認できます。 は全 OAuth クライアントが使用するトークンです。Web UI の特定の値は変更できません。これらの値は、新しいオプションで satellite-installer スクリプトを再度実行することによってのみ変更できます。アップグレード時に、ファイルを手動で変更すると変更が失われることに注意してください。以下のコマンドを入力して、OAuth 関連のインストーラーオプションをすべて表示します。
satellite-installer --full-help | grep oauth
# satellite-installer --full-help | grep oauth
/etc/foreman/settings.yaml ファイルで を false に設定したままにします。リクエストを行うユーザーを指定する場合は、この設定オプションを true に変更します。これにより、クライアントは既存の Foreman ユーザーのログインを含む FOREMAN-USER ヘッダーを送信できます。
3.3.2. OAuth 要求の作成 リンクのコピーリンクがクリップボードにコピーされました!
例3.1 curl を使用した OAuth 要求の例
curl 'https://satellite6.example.com/api/architectures' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json,version=2' \ -H 'FOREMAN-USER: User1' \ -H 'Authorization: OAuth oauth_version="1.0",oauth_consumer_key="secretkey",oauth_signature_method="hmac-sha1",oauth_timestamp=1321473112,oauth_signature=Il8hR8/ogj/XVuOqMPB9qNjSy6E='
$ curl 'https://satellite6.example.com/api/architectures' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json,version=2' \
-H 'FOREMAN-USER: User1' \
-H 'Authorization: OAuth oauth_version="1.0",oauth_consumer_key="secretkey",oauth_signature_method="hmac-sha1",oauth_timestamp=1321473112,oauth_signature=Il8hR8/ogj/XVuOqMPB9qNjSy6E='
oauth_timestamp の変更で変更する必要がある点に注意してください。また、署名にはすべてのパラメーター、HTTP メソッド、および URI の変更を反映します。そのため、OAuth クライアントライブラリーを使用してすべての OAuth パラメーターを構築することが推奨されます。
第4章 Red Hat Satellite API のスタートガイド リンクのコピーリンクがクリップボードにコピーされました!
url = 'https://satellite6.example.com/api/v2/' capsule_url = 'https://capsule.example.com:8443/api/v2/' katello_url = 'https://satellite6.example.com/katello/api/v2/'
url = 'https://satellite6.example.com/api/v2/'
capsule_url = 'https://capsule.example.com:8443/api/v2/'
katello_url = 'https://satellite6.example.com/katello/api/v2/'
/etc/rhsm/rhsm.conf ファイルの [server] セクションの エントリーをもとに、API へのアクセスに必要な、正しいポートを判断できます。これらの値を使用してスクリプトを完全に自動化し、使用するポートを検証する必要性をなくします。
4.1. curl を使用した API の例 リンクのコピーリンクがクリップボードにコピーされました!
4.1.1. シンプルなクエリーの実行 リンクのコピーリンクがクリップボードにコピーされました!
-k (セキュアでない)オプションを使用して証明書チェックを省略することができます。
-u username:password を使用するか、パスワードを含めない場合はコマンドにより入力が求められます。Red Hat は、コマンドの一部としてパスワードを含めないことを推奨します。パスワードはシェル履歴の一部になり、セキュリティーリスクが生じる可能性があります。この例には、簡素化の目的でのみパスワードが含まれています。
-s (サイレント)オプションを使用する場合は、進捗メーターやエラーメッセージは表示されません。
リソースリストの取得
以下は、リソースの一覧を返す基本的なクエリーです。このような要求では、メタデータでラップされたデータリストを返しますが、他の要求タイプでは実際のオブジェクトが返されます。
例4.1 ユーザーのリスト表示
一般的なホストクエリーの実行
以下のクエリーは、satellite6.example.com ホストの情報を返します。
特定のホストのファクト検索
以下のクエリーは、satellite6.example.com ホストの全ファクトを返します。
一致するパターンがあるか全ホストの検索
以下のクエリーは、example というパターンと一致するホストをすべて返します。
特定の環境内の全ホスト検索
以下のクエリーは、production 環境内の全ホストを返します。
特定のファクト値を持つ全ホストの検索
以下のクエリーでは、RHEV Hypervisor というモデル名を持つホストがすべて返されます。
ホストの削除
以下のクエリーでは、名前が host1.example.com のホストが削除されます。
curl -k -u sat_username:sat_password -X DELETE https://satellite6.example.com/api/v2/hosts/host1.example.com
curl -k -u sat_username:sat_password -X DELETE https://satellite6.example.com/api/v2/hosts/host1.example.com
4.1.2. リソースの作成および変更 リンクのコピーリンクがクリップボードにコピーされました!
Accept:version=2 を使用するのと同じです。URL の仕様が優先されます。
curl -H "Accept:application/json,version=2" \
-H "Content-Type:application/json" -X POST \
-u username:password -k \
-d json-formatted-data https://satellite6.example.com
$ curl -H "Accept:application/json,version=2" \
-H "Content-Type:application/json" -X POST \
-u username:password -k \
-d json-formatted-data https://satellite6.example.com
curl -H "Accept:application/json,version=2" \
-H "Content-Type:application/json" -X POST -u sat_username:sat_password \
-k -d "{\"architecture\":{\"name\":\"i686\"}}" \
https://satellite6.example.com/api/architectures
$ curl -H "Accept:application/json,version=2" \
-H "Content-Type:application/json" -X POST -u sat_username:sat_password \
-k -d "{\"architecture\":{\"name\":\"i686\"}}" \
https://satellite6.example.com/api/architectures
{"name":"i686","id":3,"created_at":"2015-10-29T13:21:09Z","updated_at":"2015-10-29T13:21:09Z","operatingsystems":[],"images":[]}
{"name":"i686","id":3,"created_at":"2015-10-29T13:21:09Z","updated_at":"2015-10-29T13:21:09Z","operatingsystems":[],"images":[]}
例4.2 新しいユーザーの作成
curl -H "Accept:application/json,version=2" \
-H "Content-Type:application/json" -X POST \
-u sat_username:sat_password -k \
-d "{\"firstname\":\"Test\",\"lastname\":\"API-User\",\"mail\":\"test@example.com\",\"login\":\"test_api\",\"password\":\"123456\",\"auth_source_id\":1}" \
https://satellite6.example.com/api/users
$ curl -H "Accept:application/json,version=2" \
-H "Content-Type:application/json" -X POST \
-u sat_username:sat_password -k \
-d "{\"firstname\":\"Test\",\"lastname\":\"API-User\",\"mail\":\"test@example.com\",\"login\":\"test_api\",\"password\":\"123456\",\"auth_source_id\":1}" \
https://satellite6.example.com/api/users
4.1.2.1. Satellite Server へのコンテンツのアップロード リンクのコピーリンクがクリップボードにコピーされました!
- アップロード要求を作成します。
- コンテンツをアップロードします。
- コンテンツをインポートします。
- アップロード要求を削除します。
手順4.1 Satellite Server へのコンテンツのアップロード
- アップロード要求を作成します。デプロイメントに合わせてサンプルパラメーターを変更するようにしてください。
curl -H "Accept:application/json,version=2" \ -H "Content-Type:application/json" \ -X POST \ -u sat_username:sat_password -k -d "{}" \ https://satellite6.example.com/katello/api/repositories/3/content_uploads$ curl -H "Accept:application/json,version=2" \ -H "Content-Type:application/json" \ -X POST \ -u sat_username:sat_password -k -d "{}" \ https://satellite6.example.com/katello/api/repositories/3/content_uploadsCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、以下のようなupload_idを返します。{"upload_id":"0be156b1-f373-4cad-89d0-924f8f4491d2","_href":"/pulp/api/v2/content/uploads/0be156b1-f373-4cad-89d0-924f8f4491d2/"}{"upload_id":"0be156b1-f373-4cad-89d0-924f8f4491d2","_href":"/pulp/api/v2/content/uploads/0be156b1-f373-4cad-89d0-924f8f4491d2/"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow - コンテンツをアップロードします。データのアップロード時には、正しい MIME タイプを使用していることを確認します。application/json MIME タイプは、Satellite 6 に対する要求の大部分に使用されます。
upload_idと MIME タイプ、およびその他のパラメーターを組み合わせてコンテンツをアップロードします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Satellite Server にコンテンツをアップロードした後に、適切なリポジトリーにそのコンテンツをインポートする必要があります。この手順を完了するまで、Satellite Server は新しいコンテンツを認識しません。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - コンテンツのアップロードおよびインポートが正常に完了したら、アップロード要求を削除することができます。これにより、アップロード中に使用された一時的なディスク領域を解放できます。
curl -H "Accept:application/json,version=2" \ -H "Content-Type:application/json" \ -X DELETE -d "{}" \ -u sat_username:sat_password \ -k https://satellite6.example.com/katello/api/repositories/3/content_uploads/0be156b1-f373-4cad-89d0-924f8f4491d2$ curl -H "Accept:application/json,version=2" \ -H "Content-Type:application/json" \ -X DELETE -d "{}" \ -u sat_username:sat_password \ -k https://satellite6.example.com/katello/api/repositories/3/content_uploads/0be156b1-f373-4cad-89d0-924f8f4491d2Copy to Clipboard Copied! Toggle word wrap Toggle overflow
例4.3 30 MB よりも大きいコンテンツのアップロード
- サンプルモジュールをダウンロードします。
wget https://forgeapi.puppetlabs.com/v3/files/theforeman-foreman-5.0.1.tar.gz?_ga=1.267255502.1792403825.1430297670 -O theforeman-foreman-5.0.1.tar.gz
$ wget https://forgeapi.puppetlabs.com/v3/files/theforeman-foreman-5.0.1.tar.gz?_ga=1.267255502.1792403825.1430297670 -O theforeman-foreman-5.0.1.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow 50,000 バイトのチャンクにモジュールを分割します。split --bytes 50000 --numeric-suffixes --suffix-length=1 theforeman-foreman-5.0.1.tar.gz foreman_module.
$ split --bytes 50000 --numeric-suffixes --suffix-length=1 theforeman-foreman-5.0.1.tar.gz foreman_module.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 結果ファイルを表示します。ls -la theforeman-foreman-5.0.1.tar.gz foreman_module.*
$ ls -la theforeman-foreman-5.0.1.tar.gz foreman_module.* -rw-r--r--. 1 root root 50000 Nov 4 04:42 foreman_module.0 -rw-r--r--. 1 root root 32928 Nov 4 04:42 foreman_module.1 -rw-r--r--. 1 root root 82928 Nov 4 04:41 theforeman-foreman-5.0.1.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 新しいアップロード要求を作成します(これは Satellite Server の cat に相当します)。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記のコマンドはアップロード ID を返します。{"upload_id":"9585528f-07ad-4bb1-9c80-ccece249b2b7","_href":"/pulp/api/v2/content/uploads/9585528f-07ad-4bb1-9c80-ccece249b2b7/"}{"upload_id":"9585528f-07ad-4bb1-9c80-ccece249b2b7","_href":"/pulp/api/v2/content/uploads/9585528f-07ad-4bb1-9c80-ccece249b2b7/"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ステップ 1 で作成したファイルのチャンクをアップロードします。以下の例で
offsetパラメーターを使用して、ファイルサイズと関連付けている点に注意してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 完全なアップロードをリポジトリーにインポートします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - アップロード要求を削除します。
curl -H "Accept:application/json,version=2" \ -H "Content-Type:application/json" \ -X DELETE -d "{}" \ -u sat_username:sat_password \ -k https://ibm-vm01.example.com/katello/api/repositories/2/content_uploads/9585528f-07ad-4bb1-9c80-ccece249b2b7$ curl -H "Accept:application/json,version=2" \ -H "Content-Type:application/json" \ -X DELETE -d "{}" \ -u sat_username:sat_password \ -k https://ibm-vm01.example.com/katello/api/repositories/2/content_uploads/9585528f-07ad-4bb1-9c80-ccece249b2b7Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Satellite サーバーにログインして、ファイルが正しく転送されたかどうかを確認します。
ls -la /var/lib/pulp/content/puppet_module/theforeman-foreman-5.0.1.tar.gz
$ ls -la /var/lib/pulp/content/puppet_module/theforeman-foreman-5.0.1.tar.gz -rw-r--r--. 1 apache apache 82928 Nov 4 04:55 /var/lib/pulp/content/puppet_module/theforeman-foreman-5.0.1.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルを比較します。cmp /var/lib/pulp/content/puppet_module/theforeman-foreman-5.0.1.tar.gz theforeman-foreman-5.0.1.tar.gz
$ cmp /var/lib/pulp/content/puppet_module/theforeman-foreman-5.0.1.tar.gz theforeman-foreman-5.0.1.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow echo $?
$ echo $? 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.1.3. スマートクラスのオーバーライド リンクのコピーリンクがクリップボードにコピーされました!
GET /api/smart_class_parameters のようになります。curl を使用すると、コマンドは以下のようになります。
curl -X GET -s -k -u sat_username:sat_password \ https://satellite6.example.com/api/smart_class_parameters
$ curl -X GET -s -k -u sat_username:sat_password \
https://satellite6.example.com/api/smart_class_parameters
curl -X GET -s -k -u sat_username:sat_password https://satellite6.example.com/api/puppetclasses/5/smart_class_parameters
$ curl -X GET -s -k -u sat_username:sat_password https://satellite6.example.com/api/puppetclasses/5/smart_class_parameters
puppetclass_name と key の 2 つで、特定のパラメーターを検索できます。たとえば、-- d, -- data オプションを使用して、URL のエンコードデータを渡します。
curl -X GET -s -k -u sat_username:sat_password https://satellite6.example.com/api/smart_class_parameters -d 'search=puppetclass_name = access_insights_client and key = authmethod'
$ curl -X GET -s -k -u sat_username:sat_password https://satellite6.example.com/api/smart_class_parameters -d 'search=puppetclass_name = access_insights_client and key = authmethod'
GET /api/smart_class_parameters/63 です。curl を使用すると、コマンドは以下のようになります。
curl -X GET -s -k -u sat_username:sat_password \ https://satellite6.example.com/api/smart_class_parameters/63
$ curl -X GET -s -k -u sat_username:sat_password \
https://satellite6.example.com/api/smart_class_parameters/63
curl -H "Accept:application/json,version=2" \
-H "Content-Type:application/json" -X PUT \
-s -k -u sat_username:sat_password \
-d '{"smart_class_parameter":{"override":true}}' \
https://satellite6.example.com/api/smart_class_parameters/63
$ curl -H "Accept:application/json,version=2" \
-H "Content-Type:application/json" -X PUT \
-s -k -u sat_username:sat_password \
-d '{"smart_class_parameter":{"override":true}}' \
https://satellite6.example.com/api/smart_class_parameters/63
curl -H "Accept:application/json,version=2" \
-H "Content-Type:application/json" -X PUT \
-s -k -u sat_username:sat_password \
-d '{"smart_class_parameter":{"override_value":{"match":"hostgroup=Test","value":"2.4.6"}}}' \
https://satellite6.example.com/api/smart_class_parameters/63
$ curl -H "Accept:application/json,version=2" \
-H "Content-Type:application/json" -X PUT \
-s -k -u sat_username:sat_password \
-d '{"smart_class_parameter":{"override_value":{"match":"hostgroup=Test","value":"2.4.6"}}}' \
https://satellite6.example.com/api/smart_class_parameters/63
curl -X DELETE -s -u sat_username:sat_password \ https://satellite6.example.com/api/smart_class_parameters/63/override_values/3
$ curl -X DELETE -s -u sat_username:sat_password \
https://satellite6.example.com/api/smart_class_parameters/63/override_values/3
4.1.3.1. 外部ファイルを使用したスマートクラスパラメーターの変更 リンクのコピーリンクがクリップボードにコピーされました!
手順4.2 外部ファイルを使用したスマートクラスパラメーターの変更
- motd という名前で Puppet クラスを検索します。今回の例では、motd という名前で検索します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow スマートクラスのパラメーターにはそれぞれ、同じ Satellite インスタンスでグローバルとなる ID が割り当てられています。Satellite Server では、motd クラスのcontentパラメーターはid=3となっています。Puppet クラス名の前に表示される Puppet クラス ID と混同しないようにしてください。 - パラメーター ID
3を使用して、motd パラメーター固有の情報を取得して、出力をoutput_file.jsonなどのファイルにリダイレクトします。curl -H "Accept:application/json,version=2" \ -H "Content-Type:application/json" -X GET \ -u sat_user:sat_passwd -k \ "https://satellite6.example.com/api/smart_class_parameters/3 \ | python -m json.tool > output_file.json
$ curl -H "Accept:application/json,version=2" \ -H "Content-Type:application/json" -X GET \ -u sat_user:sat_passwd -k \ "https://satellite6.example.com/api/smart_class_parameters/3 \ | python -m json.tool > output_file.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1 つ前の手順で作成し
たファイルを、新しいファイル(changeed_file.jsonなど)にコピーして編集します。エディターでファイルを開き、必要な値を変更します。以下の例では、motd モジュールのコンテンツパラメーターを変更しますが、これには、overrideオプションをfalseからtrueに変更する必要があります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイルの編集後に、以下のようになっていることを確認して、変更を保存します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 以下のように PUT コマンドを使用して、Satellite サーバーに変更を適用します。
curl -H "Accept:application/json,version=2" \ -H "Content-Type:application/json" \ -X PUT -u $user:$passwd \ -d @changed_file.json \ -k "https://satellite6.example.com/api/smart_class_parameters/3
$ curl -H "Accept:application/json,version=2" \ -H "Content-Type:application/json" \ -X PUT -u $user:$passwd \ -d @changed_file.json \ -k "https://satellite6.example.com/api/smart_class_parameters/3Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.1.4. エラータのホストまたはホストコレクションへの適用 リンクのコピーリンクがクリップボードにコピーされました!
curl -H "Accept:application/json,version=2" \
-H "Content-Type:application/json" -X PUT \
-u sat_username:sat_password -k \
-d json-formatted-data https://satellite6.example.com
$ curl -H "Accept:application/json,version=2" \
-H "Content-Type:application/json" -X PUT \
-u sat_username:sat_password -k \
-d json-formatted-data https://satellite6.example.com
host_collection="my-collection" が含まれます。これは、以下の例でホストコレクションに使用されます。
例4.4 ホストへのエラータの適用
curl -H "Accept:application/json,version=2" \
-H "Content-Type:application/json" -X PUT \
-u sat_username:sat_password -k \
-d "{\"organization_id\":1,\"included\":{\"search\":\"my-host\"},\"content_type\":\"errata\",\"content\":[\"RHBA-2016:1981\"]}" https://satellite6.example.com/api/v2/hosts/bulk/install_content
$ curl -H "Accept:application/json,version=2" \
-H "Content-Type:application/json" -X PUT \
-u sat_username:sat_password -k \
-d "{\"organization_id\":1,\"included\":{\"search\":\"my-host\"},\"content_type\":\"errata\",\"content\":[\"RHBA-2016:1981\"]}" https://satellite6.example.com/api/v2/hosts/bulk/install_content
例4.5 ホストコレクションへのエラータの適用
host_collection="my-collection" を渡すために必要なエスケープレベルに注目してください。
curl -H "Accept:application/json,version=2" \
-H "Content-Type:application/json" -X PUT \
-u sat_username:sat_password -k \
-d "{\"organization_id\":1,\"included\":{\"search\":\"host_collection=\\\"my-collection\\\"\"},\"content_type\":\"errata\",\"content\":[\"RHBA-2016:1981\"]}" https://satellite6.example.com/api/v2/hosts/bulk/install_content
$ curl -H "Accept:application/json,version=2" \
-H "Content-Type:application/json" -X PUT \
-u sat_username:sat_password -k \
-d "{\"organization_id\":1,\"included\":{\"search\":\"host_collection=\\\"my-collection\\\"\"},\"content_type\":\"errata\",\"content\":[\"RHBA-2016:1981\"]}" https://satellite6.example.com/api/v2/hosts/bulk/install_content
4.2. Ruby を使用した API の例 リンクのコピーリンクがクリップボードにコピーされました!
4.2.1. Ruby を使用したオブジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
4.2.2. Apipie バインディングの使用 リンクのコピーリンクがクリップボードにコピーされました!
4.3. Python を使用した API の例 リンクのコピーリンクがクリップボードにコピーされました!
4.3.1. Python を使用したオブジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
4.3.2. Python を使用したクエリーの実行 リンクのコピーリンクがクリップボードにコピーされました!
sat6api.py という名前の実行可能ファイルを作成し、以下の内容を追加します。
4.4. 詳細検索の使用 リンクのコピーリンクがクリップボードにコピーされました!
os_description で、以下のように API クエリーで使用できます。
4.5. ページネーション制御のある検索の使用 リンクのコピーリンクがクリップボードにコピーされました!
per_page および page ページネーションパラメーターを使用して、API 検索クエリーによって返される検索結果を制限できます。per_page パラメーターは、ページごとの量を指定し、page パラメーターは per_page パラメーターの計算に合わせて、どのページを返すかを指定します。
page パラメーターを指定すると per_page のデフォルト値は 20 が適用されます。
例4.6 コンテンツビューの表示
curl -X GET --user sat_username:sat_password \ "https://satellite6.example.com/katello/api/content_views?per_page=10&page=3"
$ curl -X GET --user sat_username:sat_password \
"https://satellite6.example.com/katello/api/content_views?per_page=10&page=3"
例4.7 アクティベーションキーの表示
curl -X GET --user sat_username:sat_password \ "https://satellite6.example.com/katello/api/activation_keys?organization_id=1&per_page=30&page=2"
$ curl -X GET --user sat_username:sat_password \
"https://satellite6.example.com/katello/api/activation_keys?organization_id=1&per_page=30&page=2"
例4.8 複数ページを返す設定
for i in `seq 1 3`; do curl -X GET --user sat_username:sat_password \ "https://satellite6.example.com/katello/api/content_views?per_page=5&page=$i"; done
$ for i in `seq 1 3`; do curl -X GET --user sat_username:sat_password \
"https://satellite6.example.com/katello/api/content_views?per_page=5&page=$i"; done
4.6. ライフサイクル環境との作業 リンクのコピーリンクがクリップボードにコピーされました!
_id パラメーターを使用してください。
/katello/api/environments および /katello/api/organizations/:organization_id/environments が含まれます。
1 について一覧表示できます。
curl -H "Accept:application/json,version=2" \ -H "Content-Type:application/json" -X GET \ -u sat_user:sat_password -k \ https://satellite6.example.com/katello/api/organizations/1/environments | python -m json.tool
$ curl -H "Accept:application/json,version=2" \
-H "Content-Type:application/json" -X GET \
-u sat_user:sat_password -k \
https://satellite6.example.com/katello/api/organizations/1/environments | python -m json.tool
1 のデフォルトのライブラリー環境が、ライフサイクル環境を作成するための開始点として使用されます。
手順4.3 ライフサイクル環境のリンク作成
- 開始点として使用する既存のライフサイクル環境を選択します。その ID を使用して環境を一覧表示します。今回の例では、ID が
1の環境を使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow priorオプションを1に設定して、新しいライフサイクル環境を作成します。{"organization_id":1,"label":"api-dev","name":"API Development","prior":1}の内容で JSON ファイルを作成します(例:life-cycle.json)。- 以下のようなコマンドを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
以下のコマンドの出力では、ライフサイクル環境の ID が2で、その 1 つ前のライフサイクル環境は1であると分かります。これは、ライフサイクル環境1および2がリンクされていることを示しています。この環境の後継を作成する際には、ライフサイクル環境 ID2が使用されます。priorオプションを2に設定して、別のライフサイクル環境を作成します。- 以前作成した
life-cycle.jsonを編集して、ラベル、名前、および以前の値を更新します:{"organization_id":1,"label":"api-qa","name":"API QA","prior":2} - 以下のようなコマンドを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
以下のコマンドの出力では、ライフサイクル環境の ID が3で、その 1 つ前のライフサイクル環境は2であると分かります。これは、ライフサイクル環境2と3がリンクされていることを示しています。
ライフサイクル環境の更新
ライフサイクル環境の削除
curl -X DELETE -s -k -u sat_user:sat_password https://satellite6.example.com/katello/api/environments/:id
curl -X DELETE -s -k -u sat_user:sat_password https://satellite6.example.com/katello/api/environments/:id
付録A API 応答コード リンクのコピーリンクがクリップボードにコピーされました!
| 応答 | 説明 |
|---|---|
| 200 OK | show、index、update、delete (GET、PUT、DELETE 要求) などの要求アクションに成功した場合 |
| 201 Created | create アクション (POST 要求) に成功した場合 |
| 301 Moved Permanently | Satellite が HTTPS しか使用できないように制限されているにも拘らず、HTTP が試行された時にリダイレクトされる場合 |
| 400 Bad Request | 必要なパラメーターがないか、検索クエリーに無効な構文が含まれている場合 |
| 401 Unauthorized | ユーザー認証に失敗した場合 (認証情報が不正な場合など) |
| 403 Forbidden | ユーザーにアクションの実行、リソースの読み込みなど、十分なパーミッションがないか、アクション自体がサポートされていない場合 |
| 404 Not Found | 指定の ID のレコードが存在しない場合。要求のレコードが存在しない場合には show または delete アクションに、関連のレコードの 1 つが存在しない場合には create、update、delete アクションに表示されることがあります。 |
| 409 Conflict | 既存の依存関係が原因でレコードを削除できない場合 (例: ホストのあるホストグループなど) |
| 415 Unsupported Media Type | HTTP 要求のコンテンツタイプが JSON でない場合 |
| 422 Unprocessable Entity | バリデーションエラーが原因でエンティティーの作成に失敗した場合。アクションの作成または更新にのみ適用されます。 |
| 500 Internal Server Error | 予期しないサーバーエラーが発生した場合 |
| 503 Service Unavailable | サーバーが実行されていない場合 |
付録B API パーミッションの表 リンクのコピーリンクがクリップボードにコピーされました!
| パーミッション名 | アクション | リソースタイプ |
|---|---|---|
| view_activation_keys |
| Katello::ActivationKey |
| create_activation_keys |
| Katello::ActivationKey |
| edit_activation_keys |
| Katello::ActivationKey |
| destroy_activation_keys |
| Katello::ActivationKey |
| logout |
| |
| view_architectures |
| |
| create_architectures |
| |
| edit_architectures |
| |
| destroy_architectures |
| |
| view_audit_logs |
| |
| view_authenticators |
| |
| create_authenticators |
| |
| edit_authenticators |
| |
| destroy_authenticators |
| |
| view_bookmarks |
| |
| create_bookmarks |
| |
| edit_bookmarks |
| |
| destroy_bookmarks |
| |
| download_bootdisk |
| |
| manage_capsule_content |
| SmartProxy |
| view_capsule_content |
| SmartProxy |
| view_compute_profiles |
| |
| create_compute_profiles |
| |
| edit_compute_profiles |
| |
| destroy_compute_profiles |
| |
| view_compute_resources |
| |
| create_compute_resources |
| |
| edit_compute_resources |
| |
| destroy_compute_resources |
| |
| view_compute_resources_vms |
| |
| create_compute_resources_vms |
| |
| edit_compute_resources_vms |
| |
| destroy_compute_resources_vms |
| |
| power_compute_resources_vms |
| |
| console_compute_resources_vms |
| |
| view_config_groups |
| |
| create_config_groups |
| |
| edit_config_groups |
| |
| destroy_config_groups |
| |
| view_config_reports |
| |
| destroy_config_reports |
| |
| upload_config_reports |
| |
| view_containers |
| Container |
| commit_containers |
| Container |
| create_containers |
| Container |
| destroy_containers |
| Container |
| power_compute_resources_vms |
| ComputeResource |
| view_content_hosts |
| Katello::System |
| create_content_hosts |
| Katello::System |
| edit_content_hosts |
| Katello::System |
| destroy_content_hosts |
| Katello::System |
| view_content_views |
| Katello::ContentView |
| create_content_views |
| Katello::ContentView |
| edit_content_views |
| Katello::ContentView |
| destroy_content_views |
| Katello::ContentView |
| publish_content_views |
| Katello::ContentView |
| promote_or_remove_content_views |
| Katello::ContentView |
| export_content_views |
| Katello::ContentView |
| access_dashboard |
| |
| view_discovered_hosts |
| Host |
| submit_discovered_hosts |
| Host |
| auto_provision_discovered_hosts |
| Host |
| provision_discovered_hosts |
| Host |
| edit_discovered_hosts |
| Host |
| destroy_discovered_hosts |
| Host |
| view_discovery_rules |
| DiscoveryRule |
| create_discovery_rules |
| DiscoveryRule |
| edit_discovery_rules |
| DiscoveryRule |
| execute_discovery_rules |
| DiscoveryRule |
| destroy_discovery_rules |
| DiscoveryRule |
| view_domains |
| |
| create_domains |
| |
| edit_domains |
| |
| destroy_domains |
| |
| view_environments |
| |
| create_environments |
| |
| edit_environments |
| |
| destroy_environments |
| |
| import_environments |
| |
| view_external_usergroups |
| |
| create_external_usergroups |
| |
| edit_external_usergroups |
| |
| destroy_external_usergroups |
| |
| view_external_variables |
| |
| create_external_variables |
| |
| edit_external_variables |
| |
| destroy_external_variables |
| |
| view_facts |
| |
| upload_facts |
| |
| view_filters |
| |
| create_filters |
| |
| edit_filters |
| |
| destroy_filters |
| |
| view_arf_reports |
| |
| destroy_arf_reports |
| |
| create_arf_reports |
| |
| view_policies |
| ForemanOpenscap::Policy |
| edit_policies |
| ForemanOpenscap::Policy |
| create_policies |
| ForemanOpenscap::Policy |
| destroy_policies |
| ForemanOpenscap::Policy |
| assign_policies |
| ForemanOpenscap::Policy |
| view_scap_contents |
| ForemanOpenscap::ScapContent |
| view_scap_contents |
| ForemanOpenscap::ScapContent |
| edit_scap_contents |
| ForemanOpenscap::ScapContent |
| create_scap_contents |
| ForemanOpenscap::ScapContent |
| destroy_scap_contents |
| ForemanOpenscap::ScapContent |
| edit_hosts |
| Host |
| edit_hostgroups |
| Host |
| view_job_templates |
| JobTemplate |
| create_job_templates |
| JobTemplate |
| edit_job_templates |
| |
| edit_job_templates |
| |
| edit_remote_execution_features |
| RemoteExecutionFeature |
| destroy_job_templates |
| JobTemplate |
| lock_job_templates |
| JobTemplate |
| create_job_invocations |
| JobInvocation |
| view_job_invocations |
| JobInvocation |
| execute_template_invocation | TemplateInvocation | |
| filter_autocompletion_for_template_invocation |
| TemplateInvocation |
| view_foreman_tasks |
| ForemanTasks::Task |
| edit_foreman_tasks |
| ForemanTasks::Task |
| create_recurring_logics | ForemanTasks::RecurringLogic | |
| view_recurring_logics |
| ForemanTasks::RecurringLogic |
| edit_recurring_logics |
| ForemanTasks::RecurringLogic |
| view_globals |
| |
| create_globals |
| |
| edit_globals |
| |
| destroy_globals |
| |
| view_gpg_keys |
| Katello::GpgKey |
| create_gpg_keys |
| Katello::GpgKey |
| edit_gpg_keys |
| Katello::GpgKey |
| destroy_gpg_keys |
| Katello::GpgKey |
| view_host_collections |
| Katello::HostCollection |
| create_host_collections |
| Katello::HostCollection |
| edit_host_collections |
| Katello::HostCollection |
| destroy_host_collections |
| Katello::HostCollection |
| edit_classes |
| |
| create_params |
| |
| edit_params |
| |
| destroy_params |
| |
| view_hostgroups |
| |
| create_hostgroups |
| |
| edit_hostgroups |
| |
| destroy_hostgroups |
| |
| view_hosts |
| |
| create_hosts |
| |
| edit_hosts |
| |
| destroy_hosts |
| |
| build_hosts |
| |
| power_hosts |
| |
| console_hosts |
| |
| ipmi_boot |
| |
| puppetrun_hosts |
| |
| search_repository_image_search |
| Docker/ImageSearch |
| view_images |
| |
| create_images |
| |
| edit_images |
| |
| destroy_images |
| |
| view_lifecycle_environments |
| Katello::KTEnvironment |
| create_lifecycle_environments |
| Katello::KTEnvironment |
| edit_lifecycle_environments |
| Katello::KTEnvironment |
| destroy_lifecycle_environments |
| Katello::KTEnvironment |
| promote_or_remove_content_views_to_environments | Katello::KTEnvironment | |
| view_locations |
| |
| create_locations |
| |
| edit_locations |
| |
| destroy_locations |
| |
| assign_locations |
| |
| view_mail_notifications |
| |
| view_media |
| |
| create_media |
| |
| edit_media |
| |
| destroy_media |
| |
| view_models |
| |
| create_models |
| |
| edit_models |
| |
| destroy_models |
| |
| view_operatingsystems |
| |
| create_operatingsystems |
| |
| edit_operatingsystems |
| |
| destroy_operatingsystems |
| |
| view_organizations |
| |
| create_organizations |
| |
| edit_organizations |
| |
| destroy_organizations |
| |
| assign_organizations |
| |
| view_ptables |
| |
| create_ptables |
| |
| edit_ptables |
| |
| destroy_ptables |
| |
| lock_ptables |
| |
| view_plugins |
| |
| view_products |
| Katello::Product |
| create_products |
| Katello::Product |
| edit_products |
| Katello::Product |
| destroy_products |
| Katello::Product |
| sync_products |
| Katello::Product |
| export_products |
| Katello::Product |
| view_provisioning_templates |
| |
| create_provisioning_templates |
| |
| edit_provisioning_templates |
| |
| destroy_provisioning_templates |
| |
| deploy_provisioning_templates |
| |
| lock_provisioning_templates |
| |
| user_logout |
| |
| my_account |
| |
| api_status |
| |
| view_puppetclasses |
| |
| create_puppetclasses |
| |
| edit_puppetclasses |
| |
| destroy_puppetclasses |
| |
| import_puppetclasses |
| |
| view_realms |
| |
| create_realms |
| |
| edit_realms |
| |
| destroy_realms |
| |
| view_search |
| |
| view_cases |
| |
| attachments |
| |
| 設定 |
| |
| app_root |
| |
| view_log_viewer |
| |
| ログ |
| |
| rh_telemetry_api |
| |
| rh_telemetry_view |
| |
| rh_telemetry_configurations |
| |
| view_registries |
| DockerRegistry |
| view_registries |
| DockerRegistry |
| create_registries |
| DockerRegistry |
| destroy_registries |
| DockerRegistry |
| view_roles |
| |
| create_roles |
| |
| edit_roles |
| |
| destroy_roles |
| |
| access_settings |
| |
| view_smart_proxies |
| |
| create_smart_proxies |
| |
| edit_smart_proxies |
| |
| destroy_smart_proxies |
| |
| view_smart_proxies_autosign |
| |
| create_smart_proxies_autosign |
| |
| destroy_smart_proxies_autosign |
| |
| view_smart_proxies_puppetca |
| |
| edit_smart_proxies_puppetca |
| |
| destroy_smart_proxies_puppetca |
| |
| view_statistics |
| |
| view_subnets |
| |
| create_subnets |
| |
| edit_subnets |
| |
| destroy_subnets |
| |
| import_subnets |
| |
| view_subscriptions |
| Organization |
| attach_subscriptions |
| Organization |
| unattach_subscriptions |
| Organization |
| import_manifest |
| Organization |
| delete_manifest |
| Organization |
| view_sync_plans |
| Katello::SyncPlan |
| create_sync_plans |
| Katello::SyncPlan |
| edit_sync_plans |
| Katello::SyncPlan |
| destroy_sync_plans |
| Katello::SyncPlan |
| view_tasks |
| |
| view_trends |
| |
| create_trends |
| |
| edit_trends |
| |
| destroy_trends |
| |
| update_trends |
| |
| my_organizations |
| |
| view_usergroups |
| |
| create_usergroups |
| |
| edit_usergroups |
| |
| destroy_usergroups |
| |
| view_users |
| |
| create_users |
| |
| edit_users |
| |
| destroy_users |
|