第4章 Satellite 6 API への移行
Red Hat Satellite 6 が Satellite 5 と大きく違う点の 1 つに API が挙げられます。Satellite 5 は XMLRPC ベースの API を使用しますが、Satellite 6 は REST ベースの API を使用します。この基本的な違いにより、Satellite 6 REST API を使用する前に、Satellite 5 API と統合した既存のスクリプトまたはツールを確認するか、少なくても部分的に書き直す必要があります。
本セクションは、各製品内で同じユースケースを実現するための比較を紹介します。このチュートリアルは、特定のプログラミング言語を対象にしておらず、どのスクリプトも HTTPS で安全を確保していません。ここでは、Satellite 6 API への移行を開始するために Satellite 5 API スクリプトをメンテナンスするところから説明します。
Satellite 6 移行ツールは、Satellite 5 API またはスクリプトを Satellite 6 に移行しません。移行プロセスを開始するには、このセクションから始めてください。
詳しい情報
API の詳しい情報は『API ガイド』 を参照してください。お使いの Satellite Server では、以下の場所で参照できます。
- Satellite 6: https://satellite6.example.com/apidoc/v2.html
- Satellite 5: https://satellite5.example.com/rpc/api
4.1. API スクリプトの例 リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、例を挙げて、以下の点を説明します。
Red Hat Satellite のシステムおよびホスト
- 認証し、ログインするユーザーに利用可能なシステム (Satellite 5) またはホスト (Satellite 6) の一覧を要求する
ユーザーとロール
- 認証し、ログインしたユーザーに表示可能なユーザーの一覧を要求する
- example ユーザーが存在する場合は削除する
- example ユーザーを新規作成し、そのロールを Administrator に設定する
本セクションでは、同じ結果を実現するための方法を全部で 5 つ紹介します。そのうち 2 つは Satellite 5 用で、残りの 3 つは Satellite 6 用です。
- Satellite 5 の Python スクリプト
- Satellite 6 Python スクリプト
- Satellite 6 の Ruby スクリプト
-
Satellite 5 の
spacecmd
の例 -
Satellite 6 の
hammer
の例
spacecmd
コマンドは、Satellite 5.6 ではサポートされていません。Satellite 5.7 ではサポートされているため、完全を期すためにここに示します。
全部で 10 個の例が提供されます。最初に、システムおよびホストを一覧を表示する簡単なユースケースを紹介し、その後、ユーザやロールなどの複雑なユースケースを紹介します。
4.1.1. システムおよびホストの一覧表示 リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、例を挙げて、ログインしたユーザーに利用可能なシステムおよびホストの一覧を表示する方法を説明します。
Satellite 5 で Python を使用して利用可能なシステムを一覧表示
この例では、Python スクリプトを使用して Satellite 5 に接続し、認証し、利用可能なシステムの一覧を取得します。
Satellite 6 で Python を使用して利用可能なホストを一覧表示
この例では、Python スクリプトを使用して Satellite 6 に接続し、認証し、利用可能なシステムの一覧を取得します。
Satellite 6 で Ruby を使用して利用可能なホストを一覧表示
この例では、Ruby スクリプトを使用して Satellite 6 に接続し、認証し、利用可能なシステムの一覧を取得します。
Satellite 5 でコマンドラインを使用して利用可能なシステムを一覧表示
Satellite 5 で以下のコマンドを使用して、利用なシステムを一覧表示します。
spacecmd -u username -p password system_list
# spacecmd -u username -p password system_list
セッションは以下のようになります。
spacecmd -u admin -p password system_list
# spacecmd -u admin -p password system_list
INFO: Spacewalk Username: admin
INFO: Connected to https://localhost/rpc/api as admin
test_02.example.com
Satellite 6 でコマンドラインを使用して利用可能なホストを一覧表示
Satellite 6 で以下のコマンドを使用して、利用可能なホストを一覧表示します。
hammer host list
# hammer host list
セッションは以下のようになります。
4.1.2. ユーザーの削除および作成 リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、ユーザーの検索、作成、削除する方法を説明します。
Satellite 5 で Python を使用してユーザーを管理
この例では、Python スクリプトを使用して Satellite 5 Server に接続し、認証する方法を説明します。ここでは、特定ユーザー (example) を検索し、そのユーザーが存在する場合は削除して再作成し、管理者権限を付与する方法を説明します。
Satellite 6 で Python を使用してユーザーを管理
ここでは、先ほどの例と同じタスクを行います。つまり、Python スクリプトを使用して Satellite 6 Server サーバーに接続し、認証する方法を説明します。特定のユーザーを検索し、そのユーザーが存在する場合は削除して再作成し、管理者権限を付与する方法を説明します。
Satellite 6 で Ruby を使用してユーザーを管理
次に、Ruby を使用して、先ほどの例と同じタスクを実行します。
Satellite 5 でコマンドラインを使用してユーザーを管理
ここでは、spacecmd
コマンドを使用して、上の例と同じタスクを実行します。
spacecmd -u admin -p password user_list spacecmd -u admin -p password user_delete example spacecmd -u admin -p password user_create spacecmd -u admin -p password user_addrole example org_admin
# spacecmd -u admin -p password user_list
# spacecmd -u admin -p password user_delete example
# spacecmd -u admin -p password user_create
# spacecmd -u admin -p password user_addrole example org_admin
セッションは以下のようになります。
Satellite 6 でコマンドラインを使用してユーザーを管理
ここでは、 hammer
コマンドを使用して、上の例と同じタスクを実行します。
hammer shell user list user delete --id 4 --login example user create --admin true --firstname Example --lastname User --login example --mail root@localhost --password redhat --auth-source-id 1
# hammer shell
> user list
> user delete --id 4 --login example
> user create --admin true --firstname Example --lastname User --login example --mail root@localhost --password redhat --auth-source-id 1
セッションは以下のようになります。
4.2. Satellite 6 API のヒント リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、Satellite 6 API での体験を最適化するための一般的なヒントを紹介します。
Satellite 6 API の閲覧
Satellite 6 Web UI にログインしている場合は、GET 要求のデフォルトの結果を /api/v2/<API-NAME> で確認できます。以下はその例となります。
コマンドラインで Satellite 6 API 要求の使用
curl
コマンドを使用して、Satellite 6 API と対話ができます。以下に例を示します。
例4.1 GET 要求の例
Satellite 6 の組織、ホスト、ユーザーの一覧を表示する GET 要求の例
例4.2 DELETE 要求の例
上のコマンドで得られた結果から、 ID が「9」のユーザーを削除します。
curl -k -u $SATUSER:$SATPASS -X DELETE -H \ 'Accept: application/json' $SATURL/api/v2/users/9 | json_reformat
# curl -k -u $SATUSER:$SATPASS -X DELETE -H \
'Accept: application/json' $SATURL/api/v2/users/9 | json_reformat
例4.3 POST 要求の例
example という名前の新規ユーザーを作成する POST 要求の例。true
フラグを渡して、ユーザーに管理者権限を付与します。
例4.4 PUT 要求の例
ID が「10」の example ユーザーのメールアドレスを example@localhost に変更する PUT 要求の例
curl -k -u $SATUSER:$SATPASS -X PUT \ -d '{ "id": 10, "mail": "example@localhost" }' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ $SATURL/api/v2/users/10 | json_reformat
# curl -k -u $SATUSER:$SATPASS -X PUT \
-d '{ "id": 10, "mail": "example@localhost" }' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
$SATURL/api/v2/users/10 | json_reformat