在自訂影像中加入允許使用的表達式

在自訂影像中使用允許使用表達式,以定義影像的功能和限制,並協助您在伺服器建立時找到相容的影像和設定檔組合。

在配置虛擬伺服器實例或裸機伺服器時,您可以使用允許使用表達式來設定哪些設定檔、影像和伺服器設定可以一起使用。 當您選擇建立虛擬伺服器實體或裸機伺服器時,如果您使用已定義允許使用表達式的自訂映像,則可確定哪些設定檔與這些表達式相容。

在使用具有允許使用表達式的自訂影像建立虛擬伺服器實體或裸金屬伺服器期間,允許使用屬性中提供的資訊會針對潛在的虛擬伺服器實體或裸金屬伺服器屬性進行評估,以確定該自訂影像是否可用於建立虛擬伺服器實體或裸金屬伺服器。

使用 UI、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 數量。
整數
gpu.manufacturer
表示 GPU 製造商。
區分大小寫的字串
gpu.memory
表示 GPU 記憶體的整體數量,以 表示。 GiB
整數
gpu.model
表示 GPU 型號。
區分大小寫的字串
enable_secure_boot
指示虛擬伺服器執行個體是否已啟用安全開機。
布林
裸機伺服器 UI 允許使用的表達方式
裸機伺服器使用者介面允許使用的表達式選項
允許使用的表達方式 表達變數 類型
裸機伺服器表示式 enable_secure_boot
表示裸機伺服器是否已啟用安全開機。
布林

以下範例是虛擬伺服器實例的允許使用表達式,適用於 GPU 數目大於 1 且 GPU 製造商為 Nvidia 的虛擬伺服器實例。 需要安全開機。

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

如需用於建立允許使用表達式的 Common Expression Language 的詳細資訊,請參閱 Google 的 CEL 語言定義參考資料

使用 CLI 定義允許使用的表達式

有關虛擬伺服器實例和裸機伺服器的允許使用表達方式詳細資訊,請參閱下表。

虛擬伺服器實例 CLI 允許使用的表達式
虛擬伺服器執行個體 CLI 的「允許使用」表達式選項
允許使用選項 表達變數 類型
--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 建立新的自訂影像時,如何使用允許使用表達式選項。 本範例設定影像要求裸金屬伺服器啟用安全開機,並允許提供任何虛擬伺服器實例。

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 定義允許使用的表達式

有關虛擬伺服器實例和裸機伺服器的允許使用表達方式詳細資訊,請參閱下表。

虛擬伺服器實例 API 允許使用的表達式
虛擬伺服器執行個體 API 的「允許使用」表達式選項
允許使用的財產 允許使用的子屬性 表達變數 類型
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,且 Nvidia 為 GPU 製造商。 需要安全開機。 裸機伺服器允許使用表達式設定為 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 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,且 Nvidia 為 GPU 製造商。 需要安全開機。 裸機伺服器允許使用表達式設定為 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 's CEL Language Definition reference</