在专用目录中使用定制映像时的 VPC 注意事项
如果计划将定制映像共享或发布到企业中的其他帐户,那么需要创建专用目录。 专用目录为您提供了一种方法,可以管理多个账户对产品的访问,而这些账户都在同一企业内。 您可以将任何现有 x86 虚拟服务器定制映像与专用目录共享,但加密映像除外。
在控制台中,单击 导航菜单 图标 > 基础架构
> 计算 > 图像 > 目录图像,即可在私有目录中找到自定义图像。
有关专用目录的更多信息,请参阅教程 Onboarding a virtual server image for VPC。
还可以将定制映像发布到 IBM Cloud® 目录和其他 (非企业) 帐户。 此过程需要加载到 IBM Cloud® Partner Center。
先决条件与局限性
必须先完成以下项,然后才能将定制映像导入到专用目录中。
- 创建专用目录
- 创建定制映像并将其导入到 IBM Cloud VPC
专用目录中的定制映像具有以下限制:
- 必须是 x86 映像
- 无法加密
- 不能与裸机概要文件配合使用
- 一次只能存在于一个专用目录中的一个目录产品的一个版本中
- 必须处于
available
状态
在控制台的私人目录中使用跨账户图像引用
您供应的实例属于您的帐户。 通过专用目录共享到帐户的映像可能属于其他帐户。 从属于其他帐户的映像或从指定此类映像的实例模板供应实例时,即使该实例属于您的帐户,该映像仍属于其他帐户。 在实例和相关资源的详细信息中可能存在对此类映像的引用。 例如,有关其引导卷以及从该引导卷创建的任何快照的详细信息可能引用该映像。 无论您的权限如何,您都无法通过其标识或 CRN 来访问所引用的映像,并且尝试失败,就像该映像不存在一样。
此外,引用的映像可能与帐户中的定制映像同名。 但这些映像名称用于两个不同帐户中的两个不同映像。 标识和 CRN 各自唯一地标识 IBM Cloud®中的映像。 为了避免可能检索或使用错误的图像,当您在 UI 外部剪切并粘贴图像的标识时,请使用其标识或 CRN,而不是其名称。
在 CLI 中的专用目录中使用跨帐户映像引用
您供应的实例属于您的帐户。 通过专用目录共享到帐户的映像可能属于其他帐户。 从属于其他帐户的映像或从指定此类映像的实例模板供应实例时,即使该实例属于您的帐户,该映像仍属于其他帐户。 在实例和相关资源的详细信息中可能存在对此类映像的引用。 例如,有关其引导卷以及从该引导卷创建的任何快照的详细信息可能引用该映像。 无论您的权限如何,您都无法通过其标识访问此类型的定制映像,并且尝试失败,就像该映像不存在一样。
映像引用在 CLI 中的几个不同位置中使用。 例如,如果使用 ibmcloud is instance
命令来检索实例数据,那么将在输出中看到以下内容。
Image ID Name
r006-6cab2dbd-4e57-4dc5-810b-b7366cb78999 test-image
如果您尝试使用此图像的标识来检索有关此图像的信息,
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 同时使用标识和名称来标识映像时,只有该标识在 IBM Cloud®中唯一地标识映像。
验证基于 CLI 的自动化是否可正常处理映像引用查找失败,并且不假定已删除不可访问的映像,即使其运行时具有对映像的完全访问权也是如此。 为了避免可能按“名称”检索或使用错误的图像,请改为指定图像标识。
在 API 中的专用目录中使用跨帐户映像引用
您供应的实例属于您的帐户。 通过专用目录共享到帐户的映像可能属于其他帐户。 从属于其他帐户的映像或从指定此类映像的实例模板供应实例时,即使该实例属于您的帐户,该映像仍属于其他帐户。 在实例和相关资源的详细信息中可能存在对此类映像的引用。 例如,有关其引导卷以及从该引导卷创建的任何快照的详细信息可能引用该映像。 无论您的权限如何,您都无法通过其 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
jq
可能不会预装在创建实例时可用的所有 VPC 映像 中。 在使用前,您可能需要安装 jq
或使用其他解析器。
运行此命令时,您将看到以下输出。
{
"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 中的专用目录中使用跨帐户映像引用
您供应的实例属于您的帐户。 通过专用目录共享到帐户的映像可能属于其他帐户。 从属于其他帐户的映像或从指定此类映像的实例模板供应实例时,即使该实例属于您的帐户,该映像仍属于其他帐户。 在实例和相关资源的详细信息中可能存在对此类映像的引用。 例如,有关其引导卷以及从该引导卷创建的任何快照的详细信息可能引用该映像。 无论您的权限如何,您都无法通过其标识访问此类型的定制映像,并且尝试失败,就像该映像不存在一样。
在 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 同时使用“标识”或“名称”来标识图像,但只有该标识在 IBM Cloud®中唯一地标识图像。 为了避免可能按名称检索或使用错误的图像,请改为指定图像标识。 有关更多信息,请参阅 图像数据源。
在专用目录中删除定制映像
在从专用目录管理定制映像时,无法删除定制映像,无法将其用于其他版本,也无法将其用于其他产品。
直接删除包含产品的专用目录不会立即除去这些产品。 在您删除专用目录的日期之后的 7 天内,由专用目录管理的定制映像将继续由目录管理。
如果要立即复用或删除定制映像,请确保首先从专用目录产品中的关联版本中除去该定制映像,或者删除该产品。
要从专用目录中删除已发布或共享的定制映像,请参阅教程 废弃专用产品。 要删除整个专用目录,请参阅教程 使用控制台删除专用目录。
实例组和专用目录
您可以在专用目录中使用定制映像来创建实例组。 但是,必须先向 globalcatalog-collection.instance.retrieve
创建服务到服务策略,然后才能创建实例组。 有关更多信息,请参阅 在具有实例组的专用目录中使用定制映像。
有关专用目录中用于供应实例的定制映像的信息不会在所有 IBM Cloud VPC 资源中持久存储。 有关专用目录中的定制映像的信息在 Snapshot for VPC 或来自卷的映像上不可用。 提供了供应虚拟服务器时所需的操作系统信息。
将定制映像导入到专用目录中
将定制映像导入到 IBM Cloud VPC后,可以将该定制映像导入到专用目录中。