プライベート・カタログでカスタム・イメージを使用する場合の VPC に関する考慮事項

エンタープライズ内の他のアカウントにカスタム・イメージを共有または公開する予定の場合は、プライベート・カタログを作成する必要があります。 プライベートカタログを使用すると、同じ企業内に属する複数のアカウントについて、各アカウント製品へのアクセス権限を管理することができます。 暗号化されたイメージを除き、既存の x86 仮想サーバーカスタムイメージは、プライベートカタログで共有できます。

コンソールでは、 ナビゲーションメニュー のアイコン( メニューアイコン > インフラ VPCアイコン > コンピューティング > 画像 > 画像のカタログ化 )をクリックすると、プライベートカタログ内のカスタムイメージを確認できます。

プライベート・カタログについて詳しくは、チュートリアル「 VPC の仮想サーバー・イメージのオンボード」を参照してください。

カスタム・イメージは、 IBM Cloud® カタログおよび他の (非エンタープライズ) アカウントに公開することもできます。 このプロセスには、 IBM Cloud® Partner Center へのオンボードが必要です。

前提条件および制限

カスタム・イメージをプライベート・カタログにインポートする前に、以下の項目を完了しておく必要があります。

  • プライベート・カタログの作成
  • カスタム・イメージを作成して IBM Cloud VPC にインポートします。

プライベート・カタログ内のカスタム・イメージには、以下の制限があります。

  • x86 イメージでなければなりません。
  • 暗号化できません
  • ベア・メタル・プロファイルでは使用できません
  • 一度に 1 つのプライベート・カタログ内の 1 つのカタログ製品オファリングの 1 つのバージョンにのみ存在できます
  • available 状況でなければなりません。

コンソールのプライベートカタログでクロスアカウント画像参照を使用する

プロビジョンするインスタンスは、ご使用のアカウントに属します。 プライベート・カタログを介してアカウントに共有されるイメージは、他のアカウントに属する場合があります。 別のアカウントに属するイメージから、またはそのようなイメージを指定するインスタンス・テンプレートからインスタンスをプロビジョンする場合、そのインスタンスがご使用のアカウントに属していても、イメージは引き続き他方のアカウントに属します。 このようなイメージへの参照は、インスタンスおよび関連リソースの詳細で存在する可能性があります。 例えば、そのブート・ボリュームと、そのブート・ボリュームから作成されたスナップショットに関する詳細は、そのイメージを参照する可能性があります。 権限に関係なく、参照されているイメージにその ID または CRN でアクセスすることはできず、イメージが存在しない場合と同様に試行が失敗します。

また、参照されるイメージがアカウント内のカスタム・イメージと同じ名前である可能性もあります。 ただし、これらのイメージ名は、2 つの異なるアカウント内の 2 つの異なるイメージ用です。 ID と CRN はそれぞれ、 IBM Cloud®全体でイメージを一意的に識別します。 誤ったイメージの取得や使用を回避するために、UI の外部でイメージの ID をカット・アンド・ペーストする場合は、名前ではなく ID または CRN を使用してください。

CLI でのプライベート・カタログでのアカウント間イメージ参照の使用

プロビジョンするインスタンスは、ご使用のアカウントに属します。 プライベート・カタログを介してアカウントに共有されるイメージは、他のアカウントに属する場合があります。 別のアカウントに属するイメージから、またはそのようなイメージを指定するインスタンス・テンプレートからインスタンスをプロビジョンする場合、そのインスタンスがご使用のアカウントに属していても、イメージは引き続き他方のアカウントに属します。 このようなイメージへの参照は、インスタンスおよび関連リソースの詳細で存在する可能性があります。 例えば、そのブート・ボリュームと、そのブート・ボリュームから作成されたスナップショットに関する詳細は、そのイメージを参照する可能性があります。 許可に関係なく、このタイプのカスタム・イメージにその ID でアクセスすることはできず、イメージが存在しない場合と同様に試行が失敗します。

イメージ参照は、CLI のいくつかの異なる場所で使用されます。 例えば、 ibmcloud is instance コマンドを使用してインスタンス・データを取得すると、出力内に以下が表示されます。

Image                                 ID                                          Name
                                      r006-6cab2dbd-4e57-4dc5-810b-b7366cb78999   test-image

このイメージの ID を使用してこのイメージに関する情報を取得しようとすると、以下のようになります。

ibmcloud is image r006-6cab2dbd-4e57-4dc5-810b-b7366cb78999

この試行は、以下の例のようなエラーで失敗します。

FAILED
Response HTTP Status Code: 404
Error code: not_found
Error message: The requested resource does not exist, or cannot be accessed.
Error target name: id, type: parameter
Trace ID: d8b4d382-2993-4a89-a371-1db991b510d8

このエラーは、イメージがアカウントに存在しないことを意味します。 インスタンスが別のアカウントで共有カタログ・イメージを使用してプロビジョンされた場合、この出力は、イメージが所有アカウントに存在する場合でも常に表示される出力です。

また、参照されるイメージがアカウント内のカスタム・イメージと同じ名前である可能性もあります。 ただし、これらのイメージ名は、2 つの異なるアカウント内の 2 つの異なるイメージ用です。 CLI は ID と名前の両方を使用してイメージを識別しますが、 IBM Cloud®全体でイメージを一意的に識別するのは ID のみです。

CLI ベースの自動化によってイメージ参照の失敗が正常に処理されることを確認します。また、イメージへのフルアクセスで実行される場合でも、アクセス不能なイメージが削除されたことを想定しません。 名前による誤ったイメージの取得または使用を回避するには、代わりにイメージ ID を指定します。

API のプライベート・カタログでのアカウント間イメージ参照の使用

プロビジョンするインスタンスは、ご使用のアカウントに属します。 プライベート・カタログを介してアカウントに共有されるイメージは、他のアカウントに属する場合があります。 別のアカウントに属するイメージから、またはそのようなイメージを指定するインスタンス・テンプレートからインスタンスをプロビジョンする場合、そのインスタンスがご使用のアカウントに属していても、イメージは引き続き他方のアカウントに属します。 このようなイメージへの参照は、インスタンスおよび関連リソースの詳細で存在する可能性があります。 例えば、そのブート・ボリュームと、そのブート・ボリュームから作成されたスナップショットに関する詳細は、そのイメージを参照する可能性があります。 許可に関係なく、 id、 crn、または href を使用してこのようなイメージにアクセスすることはできず、イメージが存在しない場合と同様に試行が失敗します。

API では、イメージ参照は、 Instance および BareMetalServerInitialization 応答スキーマの image プロパティーや、 Volume および Snapshot 応答スキーマの source_image プロパティーなどの場所に表示されます。 以下の例では、インスタンス・データの取得を使用して、このエラーがどのように発生する可能性があるかを示しています。

curl -X GET "$vpc_api_endpoint/v1/instances/r006-44905aa4-119d-5622-00ce-face32b78999?version=2022-09-06&generation=2" -H "Authorization: Bearer $iam_token" | jq -r '(.image)'

この例では、パーサーとして jq (MIT license でライセンス交付を受けるサード・パーティーのツール) を使用します。 一部のオペレーティングシステムでは、デフォルトで jq が含まれていません。 使用前に jq をインストールするか、別のJSONパーサーに置き換えてください。

このコマンドを実行すると、以下の出力が表示されます。

{
  "crn": "crn:v1:bluemix:public:is:us-south:a/123456::image:r006-6cab2dbd-4e57-4dc5-810b-b7366cb78999",
  "href": "https://us-south.iaas.cloud.ibm.com/v1/images/r006-6cab2dbd-4e57-4dc5-810b-b7366cb78999",
  "id": "r006-6cab2dbd-4e57-4dc5-810b-b7366cb78999",
  "name": "test-image"
}

id を使用してこのイメージに関する情報を取得しようとすると、以下のようになります。

curl -X GET "$vpc_api_endpoint/v1/images/r006-6cab2dbd-4e57-4dc5-810b-b7366cb78999?version=2022-09-06&generation=2" -H "Authorization: Bearer $iam_token"

この場合 HTTP ステータスコード404(見つかりません)で失敗します。 この状況コードは、イメージがアカウントに存在しないことを意味します。 インスタンスが別のアカウントで共有カタログ・イメージを使用してプロビジョンされた場合、この応答は、イメージが所有アカウントにまだ存在している場合でも常に受け取る応答です。

また、参照されるイメージがアカウント内のカスタム・イメージと同じ名前である可能性もあります。 ただし、これらのイメージ名は、2 つの異なるアカウント内の 2 つの異なるイメージ用です。 id、 crn、および href は、それぞれ IBM Cloud®全体でイメージを一意的に識別します。

クライアントがイメージ参照ルックアップの失敗を適切に処理し、イメージへのフルアクセスで実行された場合でも、アクセス不能なイメージが削除されたことを想定していないことを確認します。 name によって誤ったイメージが取得または使用されないようにするには、代わりにイメージ id、 crn、または href を指定します。

Terraform のプライベート・カタログでのアカウント間イメージ参照の使用

プロビジョンするインスタンスは、ご使用のアカウントに属します。 プライベート・カタログを介してアカウントに共有されるイメージは、他のアカウントに属する場合があります。 別のアカウントに属するイメージから、またはそのようなイメージを指定するインスタンス・テンプレートからインスタンスをプロビジョンする場合、そのインスタンスがご使用のアカウントに属していても、イメージは引き続き他方のアカウントに属します。 このようなイメージへの参照は、インスタンスおよび関連リソースの詳細で存在する可能性があります。 例えば、そのブート・ボリュームと、そのブート・ボリュームから作成されたスナップショットに関する詳細は、そのイメージを参照する可能性があります。 許可に関係なく、このタイプのカスタム・イメージにその ID でアクセスすることはできず、イメージが存在しない場合と同様に試行が失敗します。

イメージ参照は、Terraform 内のいくつかの異なる場所で使用されます。 例えば、 インスタンス・データ・ソース を使用してインスタンス・データを取得する場合、データ・ソース応答内に以下が表示されます。

"image": "r006-e0d3b6fb-5421-4421-9061-0ca9f79a4990"

このイメージの データ・ソース を使用してこのイメージに関する情報を取得しようとすると、

data "ibm_is_image" "example" {
  identifier = "r006-e0d3b6fb-5421-4421-9061-0ca9f79a4990"
}

この試行は、以下の例のようなエラーで失敗します。

Error: [ERROR] No image found with id  r006-e0d3b6fb-5421-4421-9061-0ca9f79a4990

このエラーは、イメージがアカウントに存在しないことを意味します。 インスタンスが別のアカウントで共有カタログ・イメージを使用してプロビジョンされた場合、この出力は、イメージが所有アカウントにまだ存在する場合でも常に表示される出力です。

また、参照されるイメージがアカウント内のカスタム・イメージと同じ名前である可能性もあります。 ただし、これらのイメージ名は、2 つの異なるアカウント内の 2 つの異なるイメージ用です。 Terraform はイメージを識別するために ID と名前の両方を使用しますが、 IBM Cloud®全体でイメージを一意的に識別するのは ID のみです。 名前による間違ったイメージの取得や使用を回避するには、代わりにイメージ ID を指定します。 詳しくは、 イメージ・データ・ソース を参照してください。

プライベート・カタログ内のカスタム・イメージの削除

カスタム・イメージがプライベート・カタログから管理されている間は、そのカスタム・イメージを削除したり、別のバージョンで再使用したり、別の製品オファリングで再使用したりすることはできません。

製品オファリングを含むプライベート・カタログを直接削除しても、オファリングは即時に削除されません。 プライベート・カタログによって管理されるカスタム・イメージは、プライベート・カタログを削除した日付から 7 日間、引き続きカタログによって管理されます。

カスタム・イメージを即時に再利用または削除する場合は、まずそのカスタム・イメージをプライベート・カタログ製品オファリングの関連バージョンから削除するか、製品オファリングを削除してください。

プライベート・カタログから公開または共有のカスタム・イメージを削除するには、チュートリアル「 プライベート製品の非推奨化」を参照してください。 プライベート・カタログ全体を削除するには、チュートリアル「 コンソールを使用したプライベート・カタログの削除」を参照してください。

インスタンス・グループとプライベート・カタログ

プライベート・カタログ内のカスタム・イメージを使用して、インスタンス・グループを作成できます。 ただし、インスタンス・グループを作成する前に、まず globalcatalog-collection.instance.retrieve に対するサービス間ポリシーを作成する必要があります。 詳しくは、 インスタンス・グループを使用するプライベート・カタログでのカスタム・イメージの使用 を参照してください。

インスタンスのプロビジョニングに使用されたプライベート・カタログ内のどのカスタム・イメージに関する情報が、すべての IBM Cloud VPC リソースにわたって保持されるわけではありません。 プライベート・カタログ内のカスタム・イメージに関する情報は、Snapshot for VPC にも、ボリュームからのイメージにも使用できません。 仮想サーバーをプロビジョンするときに必要なオペレーティング・システム情報を使用できます。

プライベート・カタログへのカスタム・イメージのインポート

カスタム・イメージを IBM Cloud VPCにインポートした後、そのカスタム・イメージをプライベート・カタログにインポートできます。