在專用型錄中使用自訂映像檔時的 VPC 考量

如果您計劃將自訂映像檔共用或發佈至企業內的其他帳戶,則需要建立專用型錄。 「私人目錄」讓您能夠管理同一企業內多個帳戶對產品的存取權限。 您可以將任何現有的 x86 虛擬伺服器自訂映像與私人目錄共享,但加密映像除外。

在控制台上,您可以點擊「導覽選單」圖示 選單圖示 > 基礎設施 VPC 圖示 > 運算 > 影像 > 影像目錄,在私人目錄中找到自訂影像。

如需專用型錄的相關資訊,請參閱指導教學 上線 VPC 的虛擬伺服器映像檔。

自訂映像檔也可以發佈至 IBM Cloud® 型錄及其他 (非企業) 帳戶。 此程序需要加入 IBM Cloud® 夥伴中心。

必要條件及限制

您必須先完成下列項目,才能將自訂映像檔匯入至專用型錄。

  • 建立專用型錄
  • 建立自訂映像檔並將其匯入至 IBM Cloud VPC

專用型錄中的自訂映像檔具有下列限制:

  • 必須是 x86 映像檔
  • 無法加密
  • 無法與裸機設定檔搭配使用
  • 一次只能存在於一個專用型錄中一個型錄產品供應項目的一個版本中
  • 必須處於 available 狀態

在主控台的私人目錄中使用跨帳戶影像引用

您佈建的實例屬於您的帳戶。 透過專用型錄共用給您帳戶的映像檔可能屬於其他帳戶。 當您從屬於另一個帳戶的映像檔或從指定此類映像檔的實例範本佈建實例時,即使該實例屬於您的帳戶,該映像檔仍屬於另一個帳戶。 實例及相關資源的詳細資料中可能存在此類映像檔的參照。 例如,關於其開機磁區以及從該開機磁區建立的任何 Snapshot 的詳細資料可能參照該映像檔。 不論您的授權為何,您都無法依其 ID 或 CRN 來存取所參照的映像檔,且嘗試會失敗,就像映像檔不存在一樣。

此外,所參照的映像檔可能與您帳戶中的自訂映像檔同名。 但這些映像檔名稱適用於兩個不同帳戶中的兩個不同映像檔。 ID 和 CRN 分別在 IBM Cloud®中唯一識別映像檔。 為了避免可能擷取或使用錯誤影像,當您在使用者介面之外剪下並貼上影像的身分時,請使用其 ID 或 CRN,而不是其名稱。

在 CLI 中使用專用型錄中的跨帳戶映像檔參照

您佈建的實例屬於您的帳戶。 透過專用型錄共用給您帳戶的映像檔可能屬於其他帳戶。 當您從屬於另一個帳戶的映像檔或從指定此類映像檔的實例範本佈建實例時,即使該實例屬於您的帳戶,該映像檔仍屬於另一個帳戶。 實例及相關資源的詳細資料中可能存在此類映像檔的參照。 例如,關於其開機磁區以及從該開機磁區建立的任何 Snapshot 的詳細資料可能參照該映像檔。 不論您的授權為何,您都無法依其 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

此錯誤表示映像檔不存在於您的帳戶中。 如果使用另一個帳戶中的共用型錄映像檔來佈建實例,則此輸出是您一律會看到的輸出,即使該映像檔存在於擁有帳戶中也一樣。

此外,所參照的映像檔可能與您帳戶中的自訂映像檔同名。 但這些映像檔名稱適用於兩個不同帳戶中的兩個不同映像檔。 雖然 CLI 同時使用 ID 和名稱來識別映像檔,但只有 ID 可跨 IBM Cloud®唯一識別映像檔。

驗證 CLI 型自動化是否正常處理映像檔參照查閱失敗,且不會假設已刪除無法存取的映像檔,即使它以映像檔的完整存取權來執行也一樣。 若要避免依「名稱」擷取或使用錯誤的映像檔,請改為指定映像檔 ID。

在 API 的專用型錄中使用跨帳戶映像檔參照

您佈建的實例屬於您的帳戶。 透過專用型錄共用給您帳戶的映像檔可能屬於其他帳戶。 當您從屬於另一個帳戶的映像檔或從指定此類映像檔的實例範本佈建實例時,即使該實例屬於您的帳戶,該映像檔仍屬於另一個帳戶。 實例及相關資源的詳細資料中可能存在此類映像檔的參照。 例如,關於其開機磁區及從該開機磁區建立之任何 Snapshot 的詳細資料,可能會參照該映像檔。 不論您的授權為何,您都無法透過其 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 授權條款 發佈的第三方工具。 某些作業系統預設並未內建 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 (未找到)。 此狀態碼表示映像檔不存在於您的帳戶中。 如果使用另一個帳戶中的共用型錄映像檔來佈建實例,則此回應是您一律取得的回應,即使該映像檔仍存在於擁有帳戶中也一樣。

此外,所參照的映像檔可能與您帳戶中的自訂映像檔同名。 但這些映像檔名稱適用於兩個不同帳戶中的兩個不同映像檔。 id、crn 和 href 分別在 IBM Cloud®中唯一識別映像檔。

驗證用戶端是否正常處理映像檔參照查閱失敗,且不會假設已刪除無法存取的映像檔,即使它以映像檔的完整存取權執行也一樣。 若要避免 name 可能擷取或使用錯誤的映像檔,請改為指定映像檔 id、crn 或 href。

在 Terraform 的專用型錄中使用跨帳戶映像檔參照

您佈建的實例屬於您的帳戶。 透過專用型錄共用給您帳戶的映像檔可能屬於其他帳戶。 當您從屬於另一個帳戶的映像檔或從指定此類映像檔的實例範本佈建實例時,即使該實例屬於您的帳戶,該映像檔仍屬於另一個帳戶。 實例及相關資源的詳細資料中可能存在此類映像檔的參照。 例如,關於其開機磁區以及從該開機磁區建立的任何 Snapshot 的詳細資料可能參照該映像檔。 不論您的授權為何,您都無法依其 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

此錯誤表示映像檔不存在於您的帳戶中。 如果實例是使用另一個帳戶中的共用型錄映像檔來佈建,則此輸出是您一律會看到的輸出,即使該映像檔仍存在於擁有帳戶中。

此外,所參照的映像檔可能與您帳戶中的自訂映像檔同名。 但這些映像檔名稱適用於兩個不同帳戶中的兩個不同映像檔。 雖然 Terraform 同時使用 ID 或名稱來識別映像檔,但只有 ID 才能在 IBM Cloud®中唯一識別映像檔。 若要避免可能依名稱擷取或使用錯誤映像檔,請改為指定映像檔 ID。 如需相關資訊,請參閱 映像檔資料來源。

刪除專用型錄中的自訂映像檔

從專用型錄管理自訂映像檔時,無法刪除自訂映像檔、針對不同版本重複使用自訂映像檔,或針對不同產品供應項目重複使用自訂映像檔。

直接刪除包含產品供應項目的專用型錄並不會立即移除供應項目。 專用型錄所管理的自訂映像檔會在您刪除專用型錄的日期之後的 7 天內繼續由型錄管理。

如果您想要立即重複使用或刪除自訂映像檔,請確定先從專用型錄產品供應項目中的相關聯版本移除該自訂映像檔,或刪除產品供應項目。

如果要從專用型錄刪除已發佈或共用的自訂映像檔,請參閱 淘汰專用產品 指導教學。 若要刪除整個專用型錄,請參閱指導教學 使用主控台刪除專用型錄。

實例群組及專用型錄

您可以使用專用型錄中的自訂映像檔來建立實例群組。 不過,您必須先建立 globalcatalog-collection.instance.retrieve 的服務對服務原則,然後才能建立實例群組。 如需相關資訊,請參閱 將專用型錄中的自訂映像檔與實例群組搭配使用。

在用於佈建實例的專用型錄中,哪個自訂映像檔的相關資訊不會在所有 IBM Cloud VPC 資源中持續保存。 在 Snapshot for VPC 或來自磁區的映像檔上,無法使用專用型錄中自訂映像檔的相關資訊。 可以使用佈建虛擬伺服器時所需的作業系統資訊。

將自訂映像檔匯入至專用型錄

將自訂映像檔匯入至 IBM Cloud VPC之後,您可以將該自訂映像檔匯入至專用型錄。