カスタム画像に使用許可表現を追加する

使用許可式をカスタム画像と一緒に使用することで、画像の機能と制限を定義し、サーバー作成時に互換性のある画像とプロファイルの組み合わせを見つけることができます。

使用許可式を使用すると、仮想サーバーインスタンスまたはベアメタルサーバーのプロビジョニング時に、どのプロファイル、イメージ、およびサーバー設定を一緒に使用できるかを設定できます。 仮想サーバーインスタンスやベアメタルサーバーを作成する際に、使用許可表現が定義されたカスタムイメージを使用すると、その表現と互換性のあるプロファイルを判断できます。

allowed-use(使用許可)式を持つカスタムイメージを使用した仮想サーバーインスタンスまたはベアメタルサーバーの作成中、allowed-use プロパティで提供される情報は、仮想サーバーインスタンスまたはベアメタルサーバーの潜在的なプロパティに対して評価され、そのカスタムイメージが仮想サーバーインスタンスまたはベアメタルサーバーの作成に使用できるかどうかが判断されます。

UI、CLI、API を使って、カスタムイメージ、ボリュームからのイメージ、切り離されたブートボリューム、ブートボリュームのスナップショットに対して、使用許可式を定義することができます。 IBM Cloud® Virtual Private Cloud では、すべてのストックイメージに対して使用許可式が設定されていますが、作成したカスタムイメージに対して使用許可式を定義することもできます。 デフォルト値はallowed-use式がtrueと評価されるもので、これはカスタム画像がすべてのサーバ条項で使用されることを許可することを意味します。 カスタム画像を特定の状況で使用したくない場合は、使用許可表現を定義または編集する必要があります。

カスタム画像やプライベートカタログで共有されている画像については、 IBM Cloud VPC で画像を作成する際に、使用許可表現を定義することができます。 ボリュームからのイメージ、デタッチされたブート・ボリューム、およびブート・ボリュームのスナップショットについては、デフォルトで使用許可式がソースから継承されます。 しかし、リソースの作成時にこれらの式をオーバーライドすることができる。 すべてのイメージ、ブート・ボリューム、およびブート・ボリュームのスナップショットについて、作成後に使用許可式を更新することができます。

x86 仮想サーバープロファイルの詳細と、カスタムイメージに使用する使用許可式を定義するための情報については、 x86-64 インスタンスプロファイルを 参照してください。 x86-64 ベアメタル・サーバー・プロファイルの詳細については、 x86-64 ベアメタル・サーバー・プロファイルを 参照してください。

使用許可表現を定義するために必要なIAM権限

使用許可式を定義するには、扱うリソースの種類に応じて、以下の1つ以上の権限を持っている必要があります。

  • is.image.image.manage-allowed-use カスタム・イメージ、プライベート・カタログで管理されているイメージ、ボリュームからのイメージの場合
  • is.volume.volume.manage-allowed-use ブートボリューム用
  • is.snapshot.snapshot.manage-allowed-use ブートボリュームのスナップショット用

UIを使用した使用許可式の定義

UIを使用して画像を作成する場合、 Advanced Options 領域に使用許可表現の詳細を追加できます。 既存の画像を表示している場合、画像の詳細には Virtual server expressionBare metal server expression が含まれます。 これらのフィールドのいずれかを編集をクリックすると、使用許可式のテキストボックスが開きます。

使用許可式セクションはテキストボックスで、以下の表に示す式を追加することができます。 仮想サーバーインスタンスとベアメタルサーバーの使用許可表現の詳細については、以下の表を参照してください。

仮想サーバーインスタンスUIの使用許可表現
仮想サーバーインスタンスのUIにおける「許可された使用」式のオプション
使用許可表現 式変数 タイプ
仮想サーバー式 gpu.count
仮想サーバーインスタンスに割り当てられた GPU の数を示します。
整数
gpu.manufacturer
GPUの製造元を示す。
大文字と小文字を区別する文字列
gpu.memory
GPUメモリの全体量を。 GiB
整数
gpu.model
GPUモデルを示す。
大文字と小文字を区別する文字列
enable_secure_boot
仮想サーバーインスタンスでセキュアブートが有効になっているかどうかを示します。
ブール値
ベアメタルサーバーUIの使用許可表現
ベアメタルサーバーのUIで許可されている使用表現オプション
使用許可表現 式変数 タイプ
ベア・メタル・サーバーの表現 enable_secure_boot
ベアメタルサーバーでセキュアブートが有効かどうかを示す。
ブール値

次の例は、GPUの製造元がNvidiaで、GPUカウントが1より大きい仮想サーバーインスタンスに対する使用許可式です。 セキュアブートが必要です。

gpu.count > 1 && gpu.manufacturer == 'nvidia' && enable_secure_boot

使用許可式の作成に使用されるCommon Expression Languageの詳細については、 Google 's CEL Language Definition referenceを参照のこと

CLIを使用した使用許可式の定義

仮想サーバーインスタンスとベアメタルサーバーの使用許可表現の詳細については、以下の表を参照してください。

仮想サーバーインスタンスCLI使用許可式
仮想サーバーインスタンスの CLI における「allowed-use」式オプション
使用許可オプション 式変数 タイプ
--allowed-use-instance gpu.count
仮想サーバーインスタンスに割り当てられた GPU の数を示します。
整数
gpu.manufacturer
GPUの製造元を示す。
大文字と小文字を区別する文字列
gpu.memory
GPUメモリの全体量を。 GiB
整数
gpu.model
GPUモデルを示す。
大文字と小文字を区別する文字列
enable_secure_boot
仮想サーバーインスタンスでセキュアブートが有効になっているかどうかを示します。
ブール値
ベアメタルサーバーCLIの使用許可表現
ベアメタルサーバーのCLIにおける「allowed-use」式オプション
使用許可オプション 式変数 タイプ
--allowed-use-bare-metal-server enable_secure_boot
ベアメタルサーバーでセキュアブートが有効かどうかを示す。
ブール値

次のコード例は、CLI を使用して新しいカスタム・イメージを作成する際に allowed-use expression オプションを使用する方法を示しています。 この例では、ベアメタルサーバーに対してセキュアブートの有効化を要求し、仮想サーバーインスタンスのあらゆるプロビジョニングを許可するようにイメージを設定しています。

ibmcloud is image-create my-ubuntu-20-amd64 --file cos://us-south/custom-image-vpc-bucket/customImage-0.qcow2 --os-name ubuntu-20-04-amd64 --allowed-use-bare-metal-server "enable_secure_boot==true" --allowed-use-instance true

次のコード例は、CLI を使用して既存のカスタム・イメージを更新する際に、allowed-use expression オプションを使用する方法を示しています。 この例では、ベアメタルサーバーと仮想サーバーインスタンスの両方のプロビジョニングにセキュアブート有効化を要求するようにイメージを更新しています。

ibmcloud is image-update r006-c9da1575-20cd-4412-9269-8ed08d3ac278 --allowed-use-bare-metal-server enable_secure_boot==true --allowed-use-instance enable_secure_boot==true

CLI で使用できる式オプションと変数の詳細については、 VPC CLI リファレンス「イメージ」を 参照してください。 使用許可式の作成に使用されるCommon Expression Languageの詳細については、 Google 's CEL Language Definition referenceを参照のこと

APIを使用した使用許可式の定義

仮想サーバーインスタンスとベアメタルサーバーの使用許可表現の詳細については、以下の表を参照してください。

仮想サーバーインスタンスAPIの使用許可式
仮想サーバーインスタンス API の「allowed-use」式オプション
使用許可プロパティ 使用許可サブプロパティ 式変数 タイプ
allowed_use instance gpu.count
仮想サーバーインスタンスに割り当てられた GPU の数を示します。
整数
gpu.manufacturer
GPUの製造元を示す。
大文字と小文字を区別する文字列
gpu.memory
GPUメモリの全体量を。 GiB
整数
gpu.model
GPUモデルを示す。
大文字と小文字を区別する文字列
enable_secure_boot
仮想サーバーインスタンスでセキュアブートが有効になっているかどうかを示します。
ブール値
ベアメタルサーバーAPIの使用許可表現
ベアメタルサーバー API の許可された使用表現オプション
使用許可プロパティ 使用許可サブプロパティ 式変数 タイプ
allowed_use bare_metal_server enable_secure_boot
ベアメタルサーバーでセキュアブートが有効かどうかを示す。
ブール値

使用許可表現を使って新しいカスタム画像を作成するには、 POST /images APIコマンドを使用します。 次の例では、GPU 数が 1 より大きく、GPU 製造元が Nvidia である仮想サーバーインスタンス用に、使用許可 式を持つ新しいカスタムイメージを作成します。 セキュアブートが必要です。 ベアメタルサーバーの使用許可式が false に設定されているため、このイメージはベアメタルサーバーのプロビジョニングに使用できません。

curl -X POST "$vpc_api_endpoint/v1/images?version=$today&generation=2" -H "Authorization: Bearer $iam_token" -d '{
      "name": "my-image",
      "file": {
        "href": "cos://us-south/my-bucket/my-image.qcow2"
      },
      "operating_system": {
        "name": "debian-9-amd64"
      },
      "allowed_use": {
         "instance": "gpu.count > 1 && gpu.manufacturer == \"nvidia\" && enable_secure_boot",
         "bare_metal_server": "false"
      }
    }'

使用許可式を使って既存のカスタム画像を更新するには、 PATCH /images APIコマンドを使用します。 次の例では、GPU 数が 1 より大きく、GPU 製造元が Nvidia である仮想サーバーインスタンスの使用許可 式を使用して、既存のカスタムイメージを更新します。 セキュアブートが必要です。 ベアメタルサーバーの使用許可式が false に設定されているため、このイメージはベアメタルサーバーのプロビジョニングに使用できません。

curl -X PATCH "$vpc_api_endpoint/v1/images/$image_id?version=$today&generation=2" -H 'Content-Type: application/json' -H "Authorization: Bearer $iam_token"  -d '{
"allowed_use": {
  "instance": "gpu.count > 1 && gpu.manufacturer == \"nvidia\" && enable_secure_boot",
  "bare_metal_server": "false"
  }
}'

APIの詳細については allowed_use プロパティとサブプロパティの詳細については、「 Virtual Private Cloud API: イメージの作成」 および 「Virtual Private Cloud API: イメージの更新」を 参照してください。 使用許可式の作成に使用されるCommon Expression Languageの詳細については、 Google 's CEL Language Definition referenceを参照のこと

Terraformを使った使用許可式の定義

仮想サーバーインスタンスとベアメタルサーバーの使用許可表現の詳細については、以下の表を参照してください。

仮想サーバーインスタンス Terraform の使用許可式
仮想サーバーインスタンスの Terraform 「allowed-use」式オプション
使用許可属性 使用許可サブ属性 式変数 タイプ
allowed_use instance gpu.count
仮想サーバーインスタンスに割り当てられた GPU の数を示します。
整数
gpu.manufacturer
GPUの製造元を示す。
大文字と小文字を区別する文字列
gpu.memory
GPUメモリの全体量を。 GiB
整数
gpu.model
GPUモデルを示す。
大文字と小文字を区別する文字列
enable_secure_boot
仮想サーバーインスタンスでセキュアブートが有効になっているかどうかを示します。
ブール値
ベアメタルサーバーのTerraform使用許可式
ベアメタルサーバーにおけるTerraformの「allowed-use」式オプション
使用許可属性 使用許可サブ属性 式変数 タイプ
allowed_use bare_metal_server enable_secure_boot
仮想サーバーインスタンスでセキュアブートが有効になっているかどうかを示します。
ブール値

使用許可表現を使って新しいカスタム画像を作成したり、既存の画像を更新したりするには、 ibm_is_image リソースを更新します。 次の例では、GPU 数が 1 より大きく、GPU 製造元が Nvidia である仮想サーバーインスタンス用に、使用許可 式を持つ新しいカスタムイメージを作成します。 セキュアブートが必要です。 ベアメタルサーバーの使用許可式が false に設定されているため、このイメージはベアメタルサーバーのプロビジョニングに使用できません。

resource "ibm_is_image" "example" {
  name               = "my-image"
  href               = "cos://us-south/buckettesttest/livecd.ubuntu-cpc.azure.vhd"
  operating_system   = "ubuntu-16-04-amd64"
  allowed_use{
    api_version       = "2025-04-03"
    bare_metal_server = “enable_secure_boot == true”
    instance = “gpu.count > 0 && enable_secure_boot == true”
  }
}

使用許可式の作成に使用されるCommon Expression Languageの詳細については、 Google のCEL言語定義リファレンス</>を参照のこと