为自定义图像添加允许使用表达式
将允许使用表达式与自定义图像一起使用,可定义图像的功能和限制,并帮助您在创建服务器时找到兼容的图像和配置文件组合。
在配置虚拟服务器实例或裸机服务器时,可以使用允许使用表达式来配置哪些配置文件、映像和服务器设置可以一起使用。 在选择创建虚拟服务器实例或裸机服务器时,如果使用带有已定义的允许使用表达式的自定义映像,则可以确定哪些配置文件与这些表达式兼容。
在使用具有允许使用表达式的自定义映像创建虚拟服务器实例或裸机服务器时,允许使用属性中提供的信息会根据潜在的虚拟服务器实例或裸机服务器属性进行评估,以确定自定义映像是否可用于创建虚拟服务器实例或裸机服务器。
通过用户界面、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 expression 和 Bare metal server expression。 单击其中一个字段上的编辑,打开允许使用表达式文本框。
允许使用的表达式部分是一个文本框,您可以在其中添加下表详述的表达式。 有关虚拟服务器实例和裸机服务器的允许使用表达式详情,请参阅下表。
| 允许使用的表达式 | 表达变量 | 类型 |
|---|---|---|
| 虚拟服务器表达式 | gpu.count表示分配给虚拟服务器实例的 GPU 数量。 |
Integer |
|
|
gpu.manufacturer表示 GPU 制造商。 |
区分大小写的字符串 |
|
|
gpu.memory表示 GPU 内存总量,单位为。 GiB |
Integer |
|
|
gpu.model表示 GPU 型号。 |
区分大小写的字符串 |
|
|
enable_secure_boot指示虚拟服务器实例是否启用了安全启动。 |
布尔值 |
| 允许使用的表达式 | 表达变量 | 类型 |
|---|---|---|
| 裸机服务器表达式 | enable_secure_boot表示裸机服务器是否启用了安全启动。 |
布尔值 |
下面的示例是一个虚拟服务器实例的允许使用表达式,该实例的 GPU 数量大于 1,且 GPU 制造商为 Nvidia。 需要安全启动。
gpu.count > 1 && gpu.manufacturer == 'nvidia' && enable_secure_boot
有关用于创建允许使用表达式的通用表达式语言的更多信息,请参阅 Google 的 CEL 语言定义参考资料
使用 CLI 定义允许使用表达式
有关虚拟服务器实例和裸机服务器的允许使用表达式详情,请参阅下表。
| 允许使用选项 | 表达变量 | 类型 |
|---|---|---|
--allowed-use-instance |
gpu.count表示分配给虚拟服务器实例的 GPU 数量。 |
Integer |
|
|
gpu.manufacturer表示 GPU 制造商。 |
区分大小写的字符串 |
|
|
gpu.memory表示 GPU 内存总量,单位为。 GiB |
Integer |
|
|
gpu.model表示 GPU 型号。 |
区分大小写的字符串 |
|
|
enable_secure_boot指示虚拟服务器实例是否启用了安全启动。 |
布尔值 |
| 允许使用选项 | 表达变量 | 类型 |
|---|---|---|
--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 语言定义参考资料
使用应用程序接口定义允许使用表达式
有关虚拟服务器实例和裸机服务器的允许使用表达式详情,请参阅下表。
| 允许使用的财产 | 允许使用的子属性 | 表达变量 | 类型 |
|---|---|---|---|
allowed_use |
instance |
gpu.count表示分配给虚拟服务器实例的 GPU 数量。 |
Integer |
|
|
|
gpu.manufacturer表示 GPU 制造商。 |
区分大小写的字符串 |
|
|
|
gpu.memory表示 GPU 内存总量,单位为。 GiB |
Integer |
|
|
|
gpu.model表示 GPU 型号。 |
区分大小写的字符串 |
|
|
|
enable_secure_boot指示虚拟服务器实例是否启用了安全启动。 |
布尔值 |
| 允许使用的财产 | 允许使用的子属性 | 表达变量 | 类型 |
|---|---|---|---|
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 定义允许使用表达式
有关虚拟服务器实例和裸机服务器的允许使用表达式详情,请参阅下表。
| 允许使用属性 | 允许使用子属性 | 表达变量 | 类型 |
|---|---|---|---|
allowed_use |
instance |
gpu.count表示分配给虚拟服务器实例的 GPU 数量。 |
Integer |
|
|
|
gpu.manufacturer表示 GPU 制造商。 |
区分大小写的字符串 |
|
|
|
gpu.memory表示 GPU 内存总量,单位为。 GiB |
Integer |
|
|
|
gpu.model表示 GPU 型号。 |
区分大小写的字符串 |
|
|
|
enable_secure_boot指示虚拟服务器实例是否启用了安全启动。 |
布尔值 |
| 允许使用属性 | 允许使用子属性 | 表达变量 | 类型 |
|---|---|---|---|
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>。