You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Test Kitchen使用Azure共享映像库中的镜像?

使用kitchen-azurerm调用Azure共享映像库中的镜像定义

刚好我之前也遇到过一模一样的问题,用image_urn和image_url都没法完美解决自定义黄金镜像的测试需求,后来发现kitchen-azurerm其实原生支持Azure共享映像库(SIG)的镜像,核心就是用image_id参数代替之前的选项,而且能自动拉取最新版本,完全解决你的痛点。

核心解决方案:使用image_id参数

kitchen-azurerm支持通过Azure资源ID直接引用共享映像库中的镜像定义,这个ID可以指向特定版本,也可以用latest自动获取最新版本,不需要手动维护VHD URL或者镜像版本号。

1. 获取共享映像库的镜像资源ID

你可以通过Azure Portal或者Azure CLI快速获取这个ID:

  • Azure CLI命令:
az sig image-version show --resource-group <resource-group-name> --gallery-name <gallery-name> --gallery-image-definition <image-def-name> --gallery-image-version latest --query id -o tsv

这条命令会直接输出最新版本镜像的资源ID,格式大概是:
/subscriptions/<订阅ID>/resourceGroups/<资源组名>/providers/Microsoft.Compute/galleries/<映像库名>/images/<镜像定义名>/versions/latest

2. 在kitchen.yml中配置image_id

把这个ID放到你的platform配置里,替换掉原来的image_urn或者image_url。示例配置如下:

---
driver:
  name: azurerm
  subscription_id: "<你的订阅ID>"
  client_id: "<服务主体ID>"
  client_secret: "<服务主体密钥>"
  tenant_id: "<租户ID>"

platforms:
  - name: golden-image-ubuntu2204
    driver:
      location: eastus
      vm_size: Standard_D2s_v3
      # 直接引用共享映像库的最新版本镜像
      image_id: "/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-sig-rg/providers/Microsoft.Compute/galleries/my-company-gallery/images/ubuntu2204-gold/versions/latest"
  - name: golden-image-win2022
    driver:
      location: eastus
      vm_size: Standard_D2s_v3
      # 指定特定版本的镜像(如果需要固定测试版本)
      image_id: "/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-sig-rg/providers/Microsoft.Compute/galleries/my-company-gallery/images/win2022-gold/versions/2.0.0"

suites:
  - name: default
    run_list:
      - recipe[your-cookbook::default]
    verifier:
      name: inspec

3. 权限注意事项

确保Test Kitchen使用的服务主体(也就是配置里的client_id对应的身份)拥有共享映像库所在资源组的Gallery Reader角色,或者至少有针对该映像库的Microsoft.Compute/galleries/images/versions/read权限,这样才能正常拉取镜像创建测试VM。

为什么这个方案比之前的更好?

  • 不用再找VHD URL:直接通过资源ID引用,不需要关心镜像底层的存储细节
  • 自动获取最新版本:用versions/latest就能自动使用共享映像库中最新的黄金镜像,每次更新镜像后,不需要修改kitchen.yml
  • 支持特定版本测试:如果需要验证特定版本的黄金镜像,只需要把latest换成对应的版本号即可

最后验证一下,运行kitchen create命令,Test Kitchen应该能成功从共享映像库拉取镜像并创建测试VM,之后你就可以正常执行kitchen converge和kitchen verify来测试你的Chef代码了。

内容的提问来源于stack exchange,提问作者codewario

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 21:37:44