第5章 さまざまな言語での API リクエスト
curl、Ruby、または Python から Red Hat Satellite に API リクエストを送信する次の例を確認できます。
5.1. curl での API の呼び出し リンクのコピーリンクがクリップボードにコピーされました!
Satellite API で curl
を使用して、さまざまなタスクを実行できます。
Red Hat Satellite は HTTPS と、デフォルトではホストの識別用に証明書を使用する必要があります。「SSL 認証の概要」 の記載どおりに Satellite Server の証明書を追加していない場合には、--insecure
オプションを使用して証明書チェックを省略することができます。
ユーザー認証の場合は、--user
オプションを使用して、Satellite ユーザー認証情報を --user My_User_Name:_My_Password
の形式で指定できます。パスワードを指定しないと、コマンドによりパスワードの入力が求められます。または、パスワードを含めない場合には、コマンドでパスワードを入力するようにプロンプトが表示されます。このセクションの例には、簡素化の目的でのみパスワードを含めています。
--silent
オプションを使用する場合は、curl
で進捗メーターやエラーメッセージは表示されない点に注意してください。
この章の例では、Python json.tool
モジュールを使用して出力をフォーマットしています。
5.1.1. API 要求への JSON データの指定 リンクのコピーリンクがクリップボードにコピーされました!
データを API 要求で Satellite Server に渡すことができます。このデータは、JSON 形式でなければなりません。--data
オプションで、JSON データを指定する場合には、--header
オプションを使用して、以下の HTTP ヘッダーを設定する必要があります。
--header "Accept:application/json" \ --header "Content-Type:application/json"
--header "Accept:application/json" \
--header "Content-Type:application/json"
以下のオプションのいずれかを使用して、--data
オプションでデータを追加します。
JSON 形式の文字列
引用符で囲まれた JSON 形式のデータを中括弧 {}
で囲みます。JSON タイプのパラメーターの値を渡す場合には、バックスラッシュ \
を使用して、引用符 "
をエスケープする必要があります。たとえば、中括弧内では "Example JSON Variable"
は \"Example JSON Variable\"
のような形式にする必要があります。
--data {"id":44, "smart_class_parameter":{"override":"true", "parameter_type":"json", "default_value":"{\"GRUB_CMDLINE_LINUX\": {\"audit\":\"1\",\"crashkernel\":\"true\"}}"}}
--data {"id":44, "smart_class_parameter":{"override":"true", "parameter_type":"json", "default_value":"{\"GRUB_CMDLINE_LINUX\": {\"audit\":\"1\",\"crashkernel\":\"true\"}}"}}
JSON 形式のファイル
引用符なしの JSON 形式のデータは、@
マークとファイル名を指定します。以下に例を示します。
--data @file.json
--data @file.json
JSON 形式データの外部ファイルを使用すると、以下のような利点があります。
- 任意のテキストエディターを使用できる
- 構文チェッカーを使用してミスを特定し、回避できる
- ツールを使用して JSON データの妥当性を確認して、再フォーマットができる
json_verify
ツールを使用して、JSON ファイルの妥当性を確認します。
json_verify < file.json
$ json_verify < file.json
5.1.2. リソースリストの取得 リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、Satellite 6 API で curl
を使用して Satellite から情報を要求する方法を説明します。これらの例には、要求と応答の両方が含まれます。デプロイメントごとに、異なる結果が得られることが想定されます。
5.1.2.1. ユーザーのリスト表示 リンクのコピーリンクがクリップボードにコピーされました!
以下の例は、Satellite リソース (今回の例では、Satellite ユーザー) のリストを返す基本的な要求です。このような要求では、メタデータでラップされたデータリストを返しますが、他の要求タイプでは実際のオブジェクトが返されます。
API 要求
curl \ --request GET \ --user My_User_Name:My_Password \ https://satellite.example.com/api/users \ | python3 -m json.tool
$ curl \
--request GET \
--user My_User_Name:My_Password \
https://satellite.example.com/api/users \
| python3 -m json.tool
API 応答
5.1.3. リソースの作成および変更 リンクのコピーリンクがクリップボードにコピーされました!
curl
を使用して、Satellite Server のリソースを操作できます。Satellite への API 呼び出しには、json
形式のデータが必要です。詳細は、「API 要求への JSON データの指定」 を参照してください。
5.1.4. ユーザーの作成 リンクのコピーリンクがクリップボードにコピーされました!
この手順を使用してユーザーを作成します。
API 要求
5.1.5. ユーザーの変更 リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、API 要求 で作成した test_user
のログインと名を変更します。
API 要求