如何告诉 Test Kitchen 使用来自 Azure 的共享图像库图像?

How to tell Test Kitchen to use a Shared Image Gallery image from Azure?

我正在使用带有 kitchen-azurerm 驱动程序的 Test Kitchen 来测试我的 Chef 代码,并且正在编写一个配置来针对各种 Azure 配置测试我的代码。一个这样的例子是我必须确保我的代码正确地收敛到我们准备在我公司使用的“黄金”图像。对于我们 运行 针对使用 Microsoft 的图像 SKU 构建的电池测试,解决方案很简单:使用 image_urn 以及 Marketplace 中图像的 URN。不幸的是,这不适用于 Marketplace 上不可用的图像。

鉴于以上情况,我无法将 MyCompanyName:MyOffer:MyImageSku:latestimage_urn 一起使用。我想也许可以尝试使用 image_url 解决它,但我不知道图像定义版本使用的 VHD 文件的 URL 是什么。这也有无法抓取最新图像的缺点;除非我弄错了,否则我需要在 kitchen.yml 中更新 URL 每次 我部署一个新的映像版本。


如何使用 kitchen-azurerm 驱动程序使用共享图像库中的图像定义?

事实证明,还有另一个 属性 与 azurerm 驱动程序一起使用,名为 image_id。这应该是托管机器映像的资源 ID。我做了一些测试,发现这适用于以下场景:

  1. 您可以直接访问托管图像本身(例如,不通过共享图像库)。在这种情况下,请提供与托管图像直接关联的资源 ID。
  2. 您可以通过共享图片库访问图片。您不能使用 image_urn 来搜索图像版本,但您可以使用以下资源 ID 之一作为 image_id 的值
    • 特定图像版本的资源 ID
      • 例如/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.Compute/galleries/GALLERY_NAME/images/IMAGE_DEFINITION_NAME/versions/IMAGE_VERSION
    • 图像定义本身的资源 ID,它抓取 latest
      • 例如/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.Compute/galleries/GALLERY_NAME/images/IMAGE_DEFINITION_NAME
      • 请注意,这与 version-specific 示例 ID 相同,但没有结尾的 /versions/IMAGE_VERSION

我可以使用上述任何技术使用我的共享图库图像。