为自定义图像添加允许使用表达式

将允许使用表达式与自定义图像一起使用,可定义图像的功能和限制,并帮助您在创建服务器时找到兼容的图像和配置文件组合。

在配置虚拟服务器实例或裸机服务器时,可以使用允许使用表达式来配置哪些配置文件、映像和服务器设置可以一起使用。 在选择创建虚拟服务器实例或裸机服务器时,如果使用带有已定义的允许使用表达式的自定义映像,则可以确定哪些配置文件与这些表达式兼容。

在使用具有允许使用表达式的自定义映像创建虚拟服务器实例或裸机服务器时,允许使用属性中提供的信息会根据潜在的虚拟服务器实例或裸机服务器属性进行评估,以确定自定义映像是否可用于创建虚拟服务器实例或裸机服务器。

通过用户界面、CLI 和 API,您可以为任何自定义镜像、卷中镜像、分离的启动卷或启动卷快照定义允许使用表达式。IBM Cloud® Virtual Private Cloud 会为所有库存镜像设置允许使用表达式,但您也可以为创建的任何自定义镜像定义允许使用表达式。 默认值是允许使用表达式的值为 true,这意味着允许在所有潜在的服务器规定中使用自定义图像。 如果不想在特定情况下使用自定义图像,则必须定义或编辑允许使用表达式。

对于自定义图像和与私人目录共享的图像,您可以在 IBM Cloud VPC 中创建图像时定义允许使用的表达式。 对于卷的映像、分离的启动卷和启动卷快照,允许使用表达式默认从源继承。 不过,您可以在创建资源时覆盖这些表达式。 对于所有映像、启动卷和启动卷快照,允许使用表达式可在创建后更新。

有关 x86 虚拟服务器配置文件的更多信息,以及要获取用于定义自定义映像的允许使用表达式的信息,请参阅 x86-64 实例配置文件。 有关 x86-64 裸机服务器配置文件的更多信息,请参阅 x86-64 裸机服务器配置文件

定义允许使用表达式需要 IAM 授权

您必须获得以下一项或多项授权,才能定义允许使用表达式,具体取决于您使用的资源类型。

  • is.image.image.manage-allowed-use 用于自定义图像、由私有目录管理的图像以及来自卷的图像
  • is.volume.volume.manage-allowed-use 用于引导卷
  • is.snapshot.snapshot.manage-allowed-use 启动卷快照

使用用户界面定义允许使用表达式

使用用户界面创建图像时,可以在 Advanced Options 区域添加允许使用的表达式细节。 如果查看的是现有图像,图像详细信息包括 Virtual server expressionBare metal server expression。 单击其中一个字段上的编辑,打开允许使用表达式文本框。

允许使用的表达式部分是一个文本框,您可以在其中添加下表详述的表达式。 有关虚拟服务器实例和裸机服务器的允许使用表达式详情,请参阅下表。

虚拟服务器实例用户界面允许使用的表达式
虚拟服务器实例 UI 中“允许使用”表达式的选项
允许使用的表达式 表达变量 类型
虚拟服务器表达式 gpu.count
表示分配给虚拟服务器实例的 GPU 数量。
Integer
gpu.manufacturer
表示 GPU 制造商。
区分大小写的字符串
gpu.memory
表示 GPU 内存总量,单位为。 GiB
Integer
gpu.model
表示 GPU 型号。
区分大小写的字符串
enable_secure_boot
指示虚拟服务器实例是否启用了安全启动。
布尔值
裸机服务器用户界面允许使用的表达式
裸机服务器 UI 允许使用的表达式选项
允许使用的表达式 表达变量 类型
裸机服务器表达式 enable_secure_boot
表示裸机服务器是否启用了安全启动。
布尔值

下面的示例是一个虚拟服务器实例的允许使用表达式,该实例的 GPU 数量大于 1,且 GPU 制造商为 Nvidia。 需要安全启动。

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

有关用于创建允许使用表达式的通用表达式语言的更多信息,请参阅 Google 的 CEL 语言定义参考资料

使用 CLI 定义允许使用表达式

有关虚拟服务器实例和裸机服务器的允许使用表达式详情,请参阅下表。

虚拟服务器实例 CLI 允许使用表达式
虚拟服务器实例 CLI 的 allowed-use 表达式选项
允许使用选项 表达变量 类型
--allowed-use-instance gpu.count
表示分配给虚拟服务器实例的 GPU 数量。
Integer
gpu.manufacturer
表示 GPU 制造商。
区分大小写的字符串
gpu.memory
表示 GPU 内存总量,单位为。 GiB
Integer
gpu.model
表示 GPU 型号。
区分大小写的字符串
enable_secure_boot
指示虚拟服务器实例是否启用了安全启动。
布尔值
裸机服务器 CLI 允许使用的表达式
裸机服务器 CLI 允许使用的表达式选项
允许使用选项 表达变量 类型
--allowed-use-bare-metal-server enable_secure_boot
表示裸机服务器是否启用了安全启动。
布尔值

下面的代码示例展示了如何在使用 CLI 创建新的自定义映像时使用允许使用表达式选项。 该示例将映像设置为要求裸机服务器启用安全启动,并允许提供任何虚拟服务器实例。

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 更新现有自定义映像时如何使用允许使用表达式选项。 示例是更新映像,要求在提供裸机服务器和虚拟服务器实例时启用安全启动。

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 参考:图像。 有关用于创建允许使用表达式的通用表达式语言的更多信息,请参阅 Google 的 CEL 语言定义参考资料

使用应用程序接口定义允许使用表达式

有关虚拟服务器实例和裸机服务器的允许使用表达式详情,请参阅下表。

虚拟服务器实例应用程序接口允许使用表达式
虚拟服务器实例 API 的“允许使用”表达式选项
允许使用的财产 允许使用的子属性 表达变量 类型
allowed_use instance gpu.count
表示分配给虚拟服务器实例的 GPU 数量。
Integer
gpu.manufacturer
表示 GPU 制造商。
区分大小写的字符串
gpu.memory
表示 GPU 内存总量,单位为。 GiB
Integer
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 属性和子属性的详细信息,请参阅 虚拟私有云 API:创建映像虚拟私有云 API:更新映像。 有关用于创建允许使用表达式的通用表达式语言的更多信息,请参阅 Google 的 CEL 语言定义参考资料

使用 Terraform 定义允许使用表达式

有关虚拟服务器实例和裸机服务器的允许使用表达式详情,请参阅下表。

虚拟服务器实例 Terraform 允许使用表达式
Terraform 虚拟服务器实例的 allowed-use 表达式选项
允许使用属性 允许使用子属性 表达变量 类型
allowed_use instance gpu.count
表示分配给虚拟服务器实例的 GPU 数量。
Integer
gpu.manufacturer
表示 GPU 制造商。
区分大小写的字符串
gpu.memory
表示 GPU 内存总量,单位为。 GiB
Integer
gpu.model
表示 GPU 型号。
区分大小写的字符串
enable_secure_boot
指示虚拟服务器实例是否启用了安全启动。
布尔值
裸机服务器 Terraform 允许使用的表达式
Terraform 裸金属服务器允许使用的表达式选项
允许使用属性 允许使用子属性 表达变量 类型
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”
  }
}

有关用于创建允许使用表达式的通用表达式语言的更多信息,请参阅 Google 的 CEL 语言定义参考文献</ STRONG>。